如何用C语言产生不重复的0到9之间的随机数
刚调试了下,弄不明白的是,为什么SZ[10]明明不存在却永远是产生的r对应输出的数。。。
费解呀。但好像用9来说应该会更规范一些。
最后都沉底了。
。。。。又研究了20分钟,终于弄懂了。。。实际上应该是9更标准一些,虽然10不会溢出。。。rang()%(10-i)第一个从0-9里选,然后选过的消失。。。最后一个为9
第二次从0-8里选,选过的消失。。。最后2个为9,以后永远都选不上第8和第九。无论9出没出现过,以此类推。最终全部为九,其余消失。
如果为10的话,其实也影响不了,因为最后几个数永远都不会取到、
采纳了吧。。。。。。
额,其实最标准的应该把那个地方改成9-i,把没选的数字往前推,但是已经出现的过的就不必推了。。。
C语言 产生3个 0到9的随机数
C语言函数名rand()
简介
功
能::伪随机数发生器
所属库:stdlib.h
用
法:
需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每次执行代码都可以产生不同的随机数。
函数原型:int
rand(void);
相关函数:srand、time、GetTickCount
程序例
1:
#include
“stdio.h”
#include
“stdlib.h”
int
main(void)
{
int
i;
printf(“Ten
random
numbers
from
to
99\n\n”);
for(i=0;
i10;
i++)
printf(“%d\n”,
rand()
%
100);
return
0;
}
例1程序在每次运行时都会生成相同的十个伪随机数,如要每次生成的随机数不同应结合srand函数和time函数。
///////////////////
int
i,a;
for(i=0;i3;i++)
{
a=rand()%9;
printf(“%d”,a);
}
如何用C语言重复的产生不重复的0到9之间的随机数?
这种是算法问题,有很多中办法啊,比如你定义一个a[10]里面放10个数,然后你设计一个函数,函数里随机生成一个0-9的随机数i,然后a[0]和a[i]交换,然后在你20次循环的一次循环里,跑100次这个函数,生成一组新数组。你20次就是生成20组不同的数组
C语言随机函数怎样产生0-9互不相同的10个随机数
对已经获取到的随机数做标记,如果已经获取到过,那么则放弃该随机数,并继续获取。
直到获取到所有随机数为止。
参考代码如下:
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
int a[10];//存储获取到的随机数。
int f[10] = {0};//存储是否获取到过。
int n = 0; //计数器。
srand(time(NULL));//设置随机数种子。
while(n10)
{
int m = rand()%10; //获取一个0~9的随机数。
if(f[m]) continue;//该数之前已经获取到过。
a[n++] = m;//将该数存入数组。
f[m] = 1;//标记该数已经获取过。
}
for(n = 0; n 10; n++)//打印结果。
printf(“%d,”,a[n]);
return 0;
}