c语言6位随机数
‘壹’ c语言怎样产生一定范围的随机数
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,可以称它为种子。
为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数。
C语言产生一定范围的随机数的源代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0; i<10; i++) //随机产生10个数。
{
printf("%d ", rand());
}
return 0;
}
(1)c语言6位随机数扩展阅读
1、如果要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数。
2、在对rand()的前三次调用中,并且此后得到的返回值仍然是在对rand()的第一批调用中所得到的其余的返回值。因此,只有再次给srand()提供一个随机的“种子”值,才能再次得到一个随机数。
‘贰’ c语言随机数
你好,我也遇到过这个问题,因为srand()是根据时间获取随机数,所以有规律可循。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#definerandom(x)(rand()%x)
#definemax10
intmain()
{
inti;
srand((int)time(0));
for(i=0;i<max;i++)
printf("%d ",random(100));
return0;
}
这样只有第一个数会发生之前的情况。
‘叁’ 关于C语言随机函数
把 srand( time(0) ); 放在循环外每次产生随机数的种子也是一样的啊,为什么产生的随机数就不一样了?
因为随机函数只需要一个种子就能产生一系列的随机数,并不是每个随机数都需要一个种子。
你把 srand(time(0)) 放到循环前面就可以了。
原因: time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,而那个循环运行起来耗时连0.000001秒都不到! 也就是说,srand(time(0)) 连着4次的种子是一样的,种子一样,生产的随机数当然是一样了。
如果你在把srand()放循环里面,在中间加个sleep函数,消耗一点时间(间隔大于1秒),那么生成的rand 就不一样了.但是这样做很不好,连着两次用srand生成的种子,间隔一样,生产的随机数间隔有会有规律性。
另:因为两次运行同一程序的时间肯定是不一样的,所以把srand放在循环前面可以得不同的种子,这样才能得到你想要的。
‘肆’ 如何用c语言产生一定范围内的随机数
srand((int)time(NULL));设定随机数种子
例子如下:
直接编译,程序执行结果如下图所示:
(4)c语言6位随机数扩展阅读:
随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。
‘伍’ c语言中如何产生1000000个6位无重复随机数
只用1000个数测试.
#include <iostream>
#include <ctime>
using namespace std;
void Fun( int a[], int n )
{
int k = 1, j = 0 ;
bool bFlag = 1;
a[0] = rand() + 100000;
for( int i = 0; i < n - 1; )
{
int num = rand() + 100000;
bFlag = 1;
for( j = 0; j < k; j ++)
{
if( a[j] == num || num > 999999)
{
bFlag = 0;
break;
}
}
if( bFlag )
{
a[k] = num;
k++;
i++;
}
}
}
int main()
{
int a[1000];
srand( time( 0 ) );
Fun( a, 1000);
for( int i = 0; i < 1000; i++)
{
cout<< a[i] <<endl;
}
return 0;
}
‘陆’ c语言 随机数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dos.h>
void createRandom(int n)
{
int i,num;
FILE *fp;
if((fp=fopen("num.txt","w")) == NULL)
{
printf("Cannot open file.\n");
exit(0);
}
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
num=rand()%500+1; //产生随机数的范围1~500
fprintf(fp,"%-4d",num);
}
printf("产生的随机数成功保存到文件当中.\n");
fclose(fp);
}
void selectSort(int n)
{
int i,j,k,a[100];
int *pt,temp;
FILE *fp;
pt=a;
if((fp=fopen("num.txt","r+")) == NULL)
{
printf("Cannot open file.\n");
exit(0);
}
//读取文件
while(fscanf(fp,"%d",&temp) != EOF)
{
*pt=temp;
pt++;
}
//选择排序
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
//在屏幕打印排序后的随机数
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
if(0 ==(i+1)%10)
printf("\n");
}
fclose(fp);
}
void display(int n)
{
int temp,i;
FILE *fp;
if((fp=fopen("num.txt","r")) == NULL)
{
printf("Cannot open file.\n");
exit(0);
}
for(i=0;fscanf(fp,"%d",&temp) != EOF;i++)
{
printf("%d\t",temp);
if(0 ==(i+1)%10)
printf("\n");
}
printf("\n");
fclose(fp);
}
int main()
{
int n=100;
system("cls");
printf("生成随机数并保存到文件中:\n");
createRandom(n);
printf("在屏幕打印产生的随机数:\n");
display(n);
printf("在屏幕打印排序后的随机数:\n");
selectSort(n);
return 0;
}
这是该问题的源码,运行结果完全满足题目的要求,你也可以在此基础上修改一下源码,让它更完善些。
‘柒’ C语言随机数
random()产生五位数的很好做,可以这样
while(1)
{/*n保存的就是你要取的随机数*/
if(i=random(100000)>9999)
{ n=i; break;}
}
因为我现在用的是VC++我只只能用rand(),所以现在不能检验,但应该没问题。
转换成字符也好做,我们定义一个函数inttochar(int n,char *s)其中n是要转换的数,s可以是指针也可以是数组,因为你要转换的是五位数,所以为了方便就直接定义一个长度位6(不是5,因为还要保存\0)的字符数组:
inttochar(int n,char *s)
{
for(i=4;i>=0;i--)
{
s[i] = n%10 + 48; /*取个位的ASCII码,0的ASCII码是48*/
n/=10; /*去掉一位*/
}
s[5] = '\0';
}
下面是vc++通过的一个检验程序:
#include<stdlib.h>
#include<stdio.h>
void inttochar(int n,char *s)
{
int i;
for(i=4;i>=0;i--)
{
s[i] = n%10 + 48; /*取个位的ASCII码,0的ASCII码是48*/
n/=10; /*去掉一位*/
}
s[5] = '\0';
}
void main()
{
int i,n;
char s[6];
while(1)
{
while(1)
{
i=rand();
if(i>9999&&i<100000)
{/*如果随机数在9999~100000之间则取之*/
n = i;break;/*不要忘了break*/
}
}
printf("随机数为 n=%d\n",n);
inttochar(n,s);
printf("字符串为 s=%s",s);
if(getchar()=='#') break;/*按#号推出程序*/
}
}
祝您学习愉快!
‘捌’ 如何用C语言产生一个六位数的随机数
C语言下没有真正的随机函数,如果用srand与rand配合产生随机数,每个数之间的间隔需要在1秒钟以上.
下面是我写的一个用来随机产生7-9位QQ邮箱的源代码,原理是先用随机函数产生一个<10的整数(这个数是所生成QQ号码的位数),然后判断这个数是否在7~9之间,如果满足要求,下面将一位一位地产生每一位数字,最后与"@qq.com"连接,生成一个QQ邮箱,并写入文件.
VC++6.0下编译通过
函数proceQQMail()用来产生随机数的代码:
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX_ADDRESS 1000
char directory[20];
DWORD writeFile(const char*filename,char*str)
{
FILE *fp;
fp=fopen(filename,"a+");
if(fp==NULL)
{
puts("Cannot open this file!");
return -1;
}
fprintf(fp,"%s\n",str);
fflush(fp);
//fputs(str,fp);
return 1;
}
DWORD proceQQMail() //→→→→→产生QQ邮箱函数
{
unsigned int i,count;
char zj[20];
char compare[20];
unsigned long relative;
for(count=1;count<=MAX_ADDRESS;count++)
{
Sleep(600);
srand((unsigned)time(0));
while(1)
{
relative=1+(int)(10.0*rand()/(RAND_MAX+1.0));//产生QQ号码的位数
if(relative<7||relative>9)
continue;//判断是否满足所需要的位数
Sleep(100);
for(i=0;i<relative;i++)
{
itoa(1+(int)(10.0*rand()/(RAND_MAX+1.0)),&zj[i],10);//生成每一位数字,将其转换为字符型,并保存在数组中
}
zj[i]='\0';
strcat(zj,"@qq.com");//连接生成邮箱
if(count>1&&strcmp(compare,zj)==0) //比较前后两者以防出现相同的邮箱
continue;
strcpy(compare,zj);
if(writeFile(directory,zj)==1)
{
printf("===>生成第%d个QQ邮箱\n",count);
//system("cls");
break;
}
}
}
return 1;
}
void main()
{
puts("=>请输入您要保存到的文件名及其目录");
scanf("%s",directory);
puts("=>Now procing QQ mail addresses……");
proceQQMail();
}