Ⅰ c语言结构编程中怎样能产生不重复的随机数
//让数不重复,而且每个数都有不好弄,但是如果是生成选手比赛顺序,我这种做法就可以了。你把选手的编号放在一个数组里面,然后从数组的第一个开始,把生成的随即数当成要交换的下标,随即交换后就打乱顺序了。
虽然产生的随机数可能一样,但是这样打乱顺序并不会把选手编号改变了。
例如,
int
tmp,num;
a[10]={1,2,3,4,5,6,7,8,9,10};
srand(time(NULL));
for(int
i=0;i<10;i++)
{
num=rand()%10;
tmp=a[i];
a[i]=a[num];
a[num]=tmp;
}
Ⅱ c语言怎么让每次运行使用的随机数种子都不一样
指定seed为当前系统流逝了的时间(单位为秒):time_t time(0):
#include <ctime>
//…
srand((unsigned)time(0));
for(int i=0;i<10;i++){
ran_num=rand() % 6;
cout<<ran_num<<" ";
}
第一次运行时输出:0 1 5 4 5 0 2 3 4 2
第二次:3 2 3 0 3 5 5 2 2 3
总之,每次运行结果将不一样,因为每次启动程序的时刻都不同
Ⅲ C语言:产生数个不同的随机数
一楼的感觉第二个数的产生过于麻烦
二楼的不能用int型,因为楼主的要求是1000000内,可能就是999999,int不够用
#include
#include
#include
#define
rand_max
1000000
void
main()
{
long
num1,num2;
time_t
t;
srand((unsigned)
time(&t));/*用时间初始化随机函数*/
int
t;
scanf("%d",&t);
for(int
i=0;i<2*t;i++)
{
num1=rand()%1000000;//产生1000000内的第一个随机数
num2=rand()%num1;//产生num1内的第二个随机数
printf("%ld\t%ld\n",num1,num2);
}
getchar();
getchar();
}
Ⅳ c语言 如何产生特殊的随机数(在0到10中产生四个互不相同的随机数)
最简单的rand()%10随机产生一个10以内的数
再用一个辅助数组,用来检测产生的数字是否和以前的一样,如果一样舍弃重新生成;
Ⅳ 用c语言编写程序,产生几个随机数,想让这几个数互不相等,怎么能做到
思路大概就是每产生一个随机数后与a[10]中的元素进行判断
如果在a[10]中没有出现重复的数字就继续产生下一个随机数
否则就重复产生知道没有重复在进行下一次生成
只是作为参考的代码
可以满足要求
intfind(int*a,intsize,intnum)
{
for(inti=0;i<size;i++)
{
if(a[i]==num)
{
return0;
}
}
return1;
}
intmain()
{
inta[10];
intnum=0;
srand(time(NULL));
boolexit=false;
while(!exit)
{
intx=rand()%20;
boolnext=false;
while(!find(a,num+1,x))
{
x=rand()%20;
}
a[num]=x;
++num;
if(10<=num)
{
exit=true;
}
}
for(inti=0;i<10;i++)
{
cout<<a[i]<<endl;
}
getchar();
return1;
}
Ⅵ c语言 产生一个随机数,如何让它每一次运行出现不同的随机数结果
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
intmain(void)
{
srand((unsigned)time(NULL));
inta;
a=rand()%10;
printf("%d ",a);
}
加一句srand((unsigned)time(NULL)); 打开随机触发器 与时钟频率同步
这样每次随机的数就不同 不过需要包含头文件#include "time.h"
Ⅶ 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++;
}
(7)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语言如何产生一定范围内一定数量的不同随机数
源代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#define a 16807//or 48271
#define m 2147483647
#define q (m/a)
#define r (m%a)
static long int seed = 1;
//return rand long in [1,m]
long int pm_rand(void)
{
long hi = seed / q;
long lo = seed % q;
long tmp = a * lo - r * hi;
if(tmp > 0)
seed = tmp;
else
seed = tmp + m;
return seed;
}
int main(void)
{
for(int i = 0;i < 100;++i)
printf("%ld ",pm_rand());
puts("");
return 0;
}
(8)c语言怎么让随机数不一样扩展阅读
不指定范围产生随机数的源代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0; i<10; i++) //随机产生10个数。
{
printf("%d
", rand());
}
return 0;
}
Ⅸ 怎样用c语言产生不同的随机数
先设置种子数srand((unsigned
int)time(0)).然后用rand()%100就可以产生0-100的不同随机数了,当然要包括头文件stdlib.h和time.h.