c语言生成不重复随机数
2023-01-17阅读(386)
问:C语言程序产生不重复随机数
- 答:#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
int i,j;
int n[10]; //要产生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>
void main()
{
int i,j,a[10];
srand(time(0));
for(i=0;i<10;i++)
{
a[i]=rand()%10;
int flag=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>
int Rand(int X,int Y)//生成随机数
{
int temp;
if(X>Y)
{
temp=X;
X=Y;
Y=temp;
}
return rand()%(Y-X+1)+X;
}
void main()
{
int arr[100];
int i;
int r;
int temp;
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("\n");
}
}
- 答:/*
7 29 89 2 63 35 34 82 96 87 69 6 44 12 5 93 4 67 46 83
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20
int main() {
int i,j,flag,num,a[N];
srand((unsigned)time(NULL));
for(i = 0; i < N; ++i) {
num = rand()%98 + 1;
flag = 1;
for(j = 0; j < i; ++j) {
if(num == a[j]) {
flag = 0;;
break;
}
}
if(flag) a[i] = num;
else --i;
}
for(i = 0; i < N; ++i)
printf("%d ",a[i]);
printf("\n");
return 0;
} - 答:c语言生成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]);
} - 答:这是生成1 - 100的不重复随机数函数
int Rand(int X,int Y)//生成随机数
{
int temp;
if(X>Y)
{
temp=X;
X=Y;
Y=temp;
}
return rand()%(Y-X+1)+X;
}