
正文
c语言生成不重复随机数的函数,c++随机不重复数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言如何用rand函数产生4个不重复的随机数啊?
int main(){ int i;srand(time(NULL));//设置随机数种子。for(i = 0; i 4; i ++)//运行4次。printf(%d\n, (int)rand()%10);//每次获取一个随机数并输出。
可以先把0-9放入一个数组,然后对第一位,随机生成一个10以内的数如:rand()%8+1(避免高位是0的情况),产生的随机数来取数组中的数,并把数组在该位置以后的数前移,即删掉该数字。
在实际编程中,我们经常需要生成随机数。在c语言中我们通常使用rand方法生成随机数,在调用rand前需要调用srand初始化随机数种子。
使用两次rand应该是为了避免重复出现随机数把,这个你要查看标准库的rand函数是如果实现的,然后在数学上可以证明这种写法可以避免重复数字,这是我的猜测。你也可以试下只用一次,写个测试程序看看会不会出现重复数字。
相关问答
Q1: C语言程序产生不重复随机数
1、下面是用C产生0-9的随机数,rand()函数产生的是伪随机数,反复调用函数rand所产生的一系列数似乎是随机的,但每次执行程序所产生的序列则是重复的。
2、到35之间产生不重复的36个随机数,就是0,1,2,3,。。35。
3、可以将生成的随机数放入数组中,每次遍历数组,有相同的重新生成随机数。知道生成4个即退出循环。
4、这里确保产生的数不再重复,只要有重复的就在随机新的数。
Q2: C语言产生不重复的随机数
1、下面是用C产生0-9的随机数,rand()函数产生的是伪随机数,反复调用函数rand所产生的一系列数似乎是随机的,但每次执行程序所产生的序列则是重复的。
2、for(i=0;i10;i++) printf(%4d,a[i]);}如图所示,rand产生不了不重复的随机数,所以方法就是把产生的重复的去掉。我这里举个例子,按照这个思路,插入到你的程序里就行了。望采纳。。
3、可以将生成的随机数放入数组中,每次遍历数组,有相同的重新生成随机数。知道生成4个即退出循环。
4、这里确保产生的数不再重复,只要有重复的就在随机新的数。
5、)%(10-i);,当i=9时,也就是最后一个循环,r的结果必然为零,而之前也有出现0的可能,直观上就不能避免0的重复。而且循环只执行了10次,也就是如果重复获得了随机数,那么不会有第11次的机会生成另一个的。
Q3: 用c语言这一个能产生四位不重复数字的随机数,最好用到数组
可以将生成的随机数放入数组中,每次遍历数组,有相同的重新生成随机数。知道生成4个即退出循环。
利用空间换时间的策略,用flag数组保证了数字不会重复,避免每次产生的随机数都要遍历一遍数组以避免重复的问题。
这里确保产生的数不再重复,只要有重复的就在随机新的数。
最终全部为九,其余消失。如果为10的话,其实也影响不了,因为最后几个数永远都不会取到、采纳了吧。。额,其实最标准的应该把那个地方改成9-i,把没选的数字往前推,但是已经出现的过的就不必推了。。
Q4: c语言中如何产生0~99不重复的随机数,调用rand,srand,time函数
1、null的值就是0,因此srand(time(null)和srand(time(0))是一样的。都是0 而 time(time_t time)里面的time_t time,也就是给指针赋值个0,就是:time = null,是允许的。
2、可以使用C语言标准库中的srand()和rand()来生成随机数,同时要生成1~99之间的随机数,只需要将生成的随机数与99整除,取其余数+1即可保证所有产生的随机数在[1,99]的区间之内。
3、srand(time(NULL));//设置随机数种子。 while(n10) { int m = rand()%10; //获取一个0~9的随机数。 if(f[m]) continue;//该数之前已经获取到过。 a[n++] = m;//将该数存入数组。
4、srand((int)time(NULL));设定随机数种子 rand()%100;产生0-99的随机数。高级点的,假如要产生16-59之间的数,你可以这样写:rand()%44+16(这里44由59-16+1得到)。
5、\x0d\x0a\x0d\x0aC++中常用rand()函数生成随机数,但严格意义上来讲生成的只是伪随机数(pseudo-random integral number)。
关于c语言生成不重复随机数的函数和c++随机不重复数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







