利用rand在十万个数字中随机50个不重复数字

本文介绍了如何在VC6.0环境下,通过编程实现从10万个数字中随机抽取50个不重复的数字。作者提到由于`rand()`函数的限制,需要自定义方法确保生成的随机数不重复,并展示了成功运行的代码,同时验证了随机数的正确性。最后,这些随机数字被用于代表音乐ID以便进行后续操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

明天就要过年了,今天闲着没事,写一个程序

我自己有10万首音乐,写了一个管理音乐的程序,有一个功能是随机在10万首歌中抽取50首音乐发送给客户端

由于使用rand()生成随机数的范围只能是0到32767,就只能自己修改下,随机出现50个数字,并且不能重复。

为了方便我是用最最最最老的VC6.0,系统是win7;

代码如下

#include "stdafx.h"
#include <Stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{

	srand((unsigned)time(NULL));
	int js=0;
	int zs=1;
ctbegin:
		printf("\t\t\t\t第%d次大循环\n",zs);
	head:
	js++;
	int s_num[50];
	int max=40000;

	for(int i=0;i<50;i++)//如何MAX小于50,需要更改这里和数值对应
	{
begin:
		int t=0;
		if(max>30000)//rand范围
		{
		

			int a=rand()%10;
			int b=rand()%10;
			int c=rand()%10;
			int d=rand()%10;
			int e=rand()%10;
			int f=rand()%10;
			int g=rand()%10;
			char str[12]={0};
			sprintf(str,"%d%d%d%d%d%d%d",a,b,c,d,e,f,g);
			t=atoi(str);
			if(t>max)
				goto begin;
		}
		else
		{
			t=rand()%max;
		}
		if(t==1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值