c语言不重复随机数
㈠ 怎样用c语言生成10个1到100的不重复的随机数
楼主你好!
根据你的要求我已经将代码实现如下
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(){
int a[10];
srand((unsigned)time(NULL));
for(int i=0;i<10;i++){
A: a[i]=rand()%99+1;
for(int j=0;j<i;j++){
a[i]=rand()%99+1;
if(a[i]==a[j])goto A;
else break;
}
}
for(int i=0;i<10;i++)
printf("%d ",a[i]);
}
希望我的回答版对你有帮助权!
㈡ c语言 rand怎么产生不重复的随机数
既然是随机数,那就是完全随机的了,系统肯定会产生重复的数据。
如果楼主想要不同的话,那就只能自己判断了,保存已经出现过的数据,重复出现的话,那就多次获取吧。
㈢ C语言:如何产生不重复的随机数字
----------------VC6测试通过----能产生不相同的数--------------------
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int x;
int num[10];//声明数组。
srand(unsigned(time(NULL)));
for(int i=0;i<6;i++)
{//取6个不重复的整数放到数组num中。
leap:x=rand()%10; //此处我将其改为-9范围了。你可以改大。
for(int j=0;j<i;j++)//用j<i来作循环条件,因为当i=0时,就可直接插入了;且此时下一个值还未插入。比如:i=4时,实际上,num中只有num[0].num[1]num[2]num[3]四个元素。
{
if(num[j]==x)// 此数组没声明。
{
//i=0; //此处不能改写i的值。如果你改了,就不会循环与数组中的数比较了。当然就可能出现重复的情况了。
goto leap;
}//if
}//for
num[i]=x;// 如果不等就插进数组num相应位置中。
printf("%d ",num[i]); //此处打印时,要空一格,否则数据都连在一起了。
}//for
printf("\n");
}//main
㈣ 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语言产生不重复的0到9之间的随机数
上面的会重复 ,用我这个
#include <stdlib.h> //标准工具库,要用到其中的rand()
#include <stdio.h>
#include<conio.h>
#include <time.h> //时间库,要用到里面的版时间来做随机权数的种子
int main(void)
{
int i;
int r;
int sz[10]={0,1,2,3,4,5,6,7,8,9};
srand(time(NULL));
printf("Ten random numbers from 0 to 9\n\n");
for(i=0; i<10; i++)
{
r=rand()%(10-i);
printf("%d\n",sz[r]);
for(int j=r;j<10;j++)
sz[j]=sz[j+1];
}
getch();
return 0;
}
㈥ C语言程序产生不重复随机数
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
int i,j;
int n[10]; //要产生个随机数
int n1=100; //100个随机数
int n2=51; //从50开始
// n[0]=rand()%n1+n2;//产生50-150的随机数
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
n[i]=rand()%n1+n2;
while(1) //判断是否重复
{
for(j=0;j<i;j++)
{
if(n[i]==n[j])
{
n[i]=rand()%n1+n2;
j=0;
break;
}
}
if(j==i)//新随机数与前面几个随机数都不重复
break;
}
printf("%d\n",n[i]);//产生从50-150的随机数
}
return 0;
}
//你发的程序少太多东西也不清楚你要表达什么意思,唯一理解的是你提出的要求,我编了一个程序可以产生不重复随机数但是不知道有没有系统函数可以这样做,把n1改成10很明显可以看见程序是符合要求的
㈦ C语言产生不重复的随机数
#include<iostream.h>
#include<cstdlib>
#include<ctime>
voidmain()
{
inti,j,a[10];
srand(time(0));
for(i=0;i<10;i++)
{
a[i]=rand()%10;
intflag=1;
while(flag==1)//你的这里可能还会产生重复的数,这版里确保产生的数不再重复,只权要有重复的就在随机新的数。
{
for(j=0;j<i;j++)
if(a[i]==a[j])
break;
if(j<i)
a[i]=rand()%10;
if(j==i)
flag=0;
};
}
for(i=0;i<10;i++)
cout<<a[i]<<endl;
}
这样就可以了,参考下哈,满意请点赞。
㈧ c语言生成1 - 100的不重复随机数
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
intRand(intX,intY)//生成随机数
{
inttemp;
if(X>Y)
{
temp=X;
X=Y;
Y=temp;
}
returnrand()%(Y-X+1)+X;
}
voidmain()
{
intarr[100];
inti;
intr;
inttemp;
srand((unsigned)time(NULL));
for(i=0;i<100;i++)arr[i]=i+1;//将数组赋值1~100
for(i=0;i<100;i++)
{
r=Rand(0,99);
temp=arr[i];
arr[i]=arr[r];
arr[r]=temp;
}//数组乱序
for(i=1;i<=100;i++)
{
printf("%3d",arr[i-1]);
if(i%10==0)
printf(" ");
}
}
㈨ C语言如何用rand函数产生4个不重复的随机数啊
可以将生成的随机数放入数组中,每次遍历数组,有相同的重新生成随机数。知道生成4个即版退出循环。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
intnum[4],cnt=0,n;
srand(clock());//设置随权机数种子
while(cnt<4)
{
n=rand()%4;//生成4以内随机数,这样更利于测试
for(inti=0;i<cnt;i++)
if(num[i]==n)//遍历数组,有相同的重新生成随机数
continue;
num[cnt++]=n;
}
for(inti=0;i<cnt;i++)//打印随机数数组
printf("%d",num[i]);
return0;
}