当前位置:首页 » 编程语言 » C语言随机数生成的数字唯一
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

C语言随机数生成的数字唯一

发布时间: 2022-08-22 21:59:54

‘壹’ c语言如何产生不重复的随机数

用一个数组装随机数,一个数组表示已经记录过的随机数;

比如说随机0-8,生成一个随机8位数组且数组内各项不重复;

例:

intarray[8];

intarrayIndex[8]={0,0,0,0,0,0,0,0};

intk=0;

srand(100);

while(k<8){

intq=rand()%8+1;

if(arrayIndex[q-1]==1){

continue;

}

array[k]=q;

arrayIndex[q-1]=1;

k++;

}

(1)C语言随机数生成的数字唯一扩展阅读

C语言随机输出1~20不重复的随机数

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

voidmain()

{

inta[20];

inti,j;

srand((int)time(0));

a[0]=rand()%20+1;

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

{

a[i]=rand()%20+1;

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

{

if(a[i]==a[j])

{

i--;

}

}

}

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

{

printf("%3dn",a[i]);

}

}

‘贰’ C语言产生唯一随机数问题,代码解释。while(a[m=rand()%100]);

从第一次开始,while(a[50]) a[50]=0时,就是因为它为0了,循环不成立才往下执行,不然a[50]=1就一直在while(a[m=rand()%100]);这里循环了,注意,这里是有分号的,while在这里只作用于这个分号之前,如果条件成立,就一直死循环,不会往下了。

‘叁’ 在c语言里,为什么rand()每次生成的数都一样

rand((unsigned)time(NULL))
你生成的数字一样,是因为没有根据它的时间来变化,上面的代码就可以了.

‘肆’ C语言产生随机数字,结果输出值都一样

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//#include<crtdefs.h>
intmain(){
inti;
intnum;
srand((unsignedint)time(NULL));//改成这样就好了:先用时间初始化随机种子
for(i=0;i<10;i++){
//time_tt;
num=rand()%100; //生成随机数
printf("%d ",num);
num>50?printf("你赢了 "):printf("你输了 "); //0为假,非0为真
}
getchar();
}

‘伍’ 为什么我用C语言编写的一个随机数生成程序生成的数总是一样的

你需要设置随机数种子才能生成不一样的随机数
你可以参考下面这个样例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,j;
srand((int)time(0));/*设置随机数种子*/
for(i=0;i<10;i++)
{
j=rand()%100;
printf("%d\n",j);
}
return 0;
}

‘陆’ C语言生成随机数的函数,为什么循环后随机数都一样

srand()函数是初始化随机数产生器,它产生随机数种子,说白了就是初始化随机数。

srand((unsigned)time(0));取的是系统时间,也就是距离1970.1.1午夜有多少秒。而for循环每循环一次时间远远小于1秒,这就导致了srand((unsigned)time(0))产生的种子并没有改变。 那么,相同的随机数种子所产生的随机数肯定是一样的了。


(6)C语言随机数生成的数字唯一扩展阅读:

C语言产生随机数的方法:

1,在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数。

2,C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。

3,rand()会返回一随机数值,范围在0至RAND_MAX 间。返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)我运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。

4,在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。

‘柒’ C语言:为什么每次产生的rand随机数全都一样例如第一个是9,后面全都是9

/*

Enter the number of sets: enter q to stop.

5 9

How many sides and how many dice:3

Here are 5 sets of 3 9-sided throws.

25 18 14 13 17

How many sets? Enter q to stop.

q

Press any key to continue

*/

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intdiceroll(intnum,intside);//返回骰子产生的数字的总和

intmain(void){
intsets,side,dice;//sets为回合数,side面,dice:骰子个数
inti;//变量初始化
srand((unsigned)time(NULL));//应在main()初始化随机数种子
printf("Enterthenumberofsets:enterqtostop. ");//set组
while(scanf("%d",&sets)==1&&sets>0){
printf("Howmanysidesandhowmanydice:");
if(scanf("%d%d",&side,&dice)==2){
printf("Hereare%dsetsof%d%d-sidedthrows. ",sets,dice,side);
for(i=0;i<sets;i++)//0-sets个回合
printf("%d",diceroll(side,dice));//打印出返回值
printf(" ");
printf("Howmanysets?Enterqtostop. ");
}
elseprintf("inputside,anddice: ");
}
return0;
}

intdiceroll(intside,intdice){
inti,sum;
for(i=0,sum=0;i<dice;i++)
sum+=rand()%side+1;//产生3个骰子摇出的总和sum
returnsum;//返回3个骰子摇出的总数sum
}

‘捌’ c语言中怎样产生位数一定的随机数

c语言的获取随机数的函数为rand(),
可以获得一个非负整数的随机数。要调用rand需要引用头文件stdlib.h。
要让随机数限定在一个范围,可以采用模除加加法的方式。
要产生随机数r,
其范围为
m<=r<=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理为,对于任意数,
0<=rand()%(n-m+1)<=n-m
于是
0+m<=rand()%(n-m+1)+m<=n-m+m

m<=rand()%(n-m+1)+m<=n

‘玖’ C语言随机生成数字

for(int
i=0;i<=a长度;i++)
{
a[i]=random(100);/*得到0到100之间的随机数,具体用法可以查一下随机函数。相应的随机函数还有randomize,srand,rand*/
}