当前位置:首页 » 编程语言 » c语言6位随机数

c语言6位随机数

发布时间: 2022-04-27 22:25:31

‘壹’ 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();
}

热点内容
安卓文字为什么没有苹果舒服 发布:2025-05-16 03:01:26 浏览:356
phpnow解压版 发布:2025-05-16 02:52:49 浏览:811
dmporacle数据库 发布:2025-05-16 02:44:31 浏览:831
云主机上传 发布:2025-05-16 02:44:30 浏览:82
鼠标如何编程 发布:2025-05-16 02:29:09 浏览:816
安卓70能用什么软件 发布:2025-05-16 01:45:09 浏览:481
编程发展史 发布:2025-05-16 01:38:52 浏览:529
android图片气泡 发布:2025-05-16 01:38:40 浏览:887
文件加密编辑器下载 发布:2025-05-16 01:30:41 浏览:344
linuxapacheyum安装 发布:2025-05-16 01:30:31 浏览:477