用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]
中即可
打乱顺序就行了。 参考技术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语言随机生成一串字符串,字符串要求8-16位并且包含大小写字母.数字.和符号