用c语言怎么生成20个[0,20]不相等的随机数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言怎么生成20个[0,20]不相等的随机数?相关的知识,希望对你有一定的参考价值。

利用rand()%21可以得到0~20之间的数字,然后弄一个数组做标记,每得到一个数,将其标记;再继续生成下一个数,若已被标记,继续重新生成;....;直到有20个数被标记为止即可 参考技术A #include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(void)

int a, i;

srand(time(NULL)); /* 甚至随机函数的种子 */
for (i = 0; i < 100; i++) /* i的范围设置你想生成的随机数的个数 */
a = rand() % 20 + 1;
printf("%d\n", a);

return 0;
追问

你这里的a可能重复啊,没有设置重复的处理啊

追答

那你可以把a改成数组的形式,比如a[100],然后循环的时候将生成的随机数存储到a[i]
中即可

参考技术B 20个在20的范围内,不相等,不就是1-20吗?
打乱顺序就行了。
参考技术C void random20()

int pick[20] = -1;

int i=0,j=0;
bool flag = true;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 20;i++ )

int num = rand()%21;
for(j=i-1;j>=0;j--)

if(pick[j] == num)

flag = false;
break;

flag = true;

if(flag)

pick[i]=num;

else

i--;


for (i = 0;i<20;i++)

printf("pick[%d] = %d\n",i,pick[i]);

本回答被提问者采纳
参考技术D rand()函数乘个10,定义为整形,

怎么用R语言生成0-1之间的随机数?

同上

1、第一步,调用runif()函数,这时函数内的值为6,生成6个随机数,如下图所示:

2、第二步,再次调用runif()函数,runif(6)又生成6个随机数,如下图所示:

3、第三步,使用set.seed(12345)设置种子元素,然后调用runif(6),查看数据情况,如下图所示:

4、第四步,再次调用set.seed()函数,这时多加了一个6,如下图所示:

5、第五步,再次调用runif(6)函数,查看生成的6个随机数的不同,如下图所示:

6、第六步,再次调用set.seed()函数,这时是从1到9;然后调用runif()函数,如下图所示:

参考技术A 产生随机数有两个函数,他们是 runif(),rnorm()
举例:
runif(10,min=0,max=1) #产生10个最小值为0,最大值为1的随机数
[1] 0.23848237 0.44347367 0.59288350 0.58668014 0.11930517 0.01078175
[7] 0.10631982 0.12381276 0.42652069 0.20232110

ronrm(10,mean=0,sd=1) #产生10个平均值为0,方差为1的随机数
[1] 1.1218179 0.9658383 -0.1781805 -0.2966419 -0.5140599 -0.6712930
[7] -0.6191541 0.3281707 -0.4221563 -1.4064053

以上是关于用c语言怎么生成20个[0,20]不相等的随机数?的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么产生0-100之间1个随机数

怎么用c语言随机生成一串字符串,字符串要求8-16位并且包含大小写字母.数字.和符号

C语言随机函数:用0到9这10位数随机输出4位.输出100次后停止...

java生成10个不相等的1-20的随机数

怎样用C语言生成10个1到100的不重复的随机数?

excel中RAND函数产生随机数的概率控制