精华内容
下载资源
问答
  • c语言生成0-1的随机数
    千次阅读
    2021-05-20 03:18:22

    C语言产生随机数的方法

    C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。那么C语言产生随机数的方法都有哪些呢?以下仅供参考!

    在 C 语言中, rand() 函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C 提供了 srand() 函数,它的原形是 void srand( int a)。

    可能大家都知道 C 语言中的随机函数 random,可是 random 函数并不是 ANSI C 标准,所以说,random 函数不能在 gcc,vc 等编译器下编译通过。

    rand() 会返回一随机数值,范围在 0 至 RAND_MAX 间。返回 0 至 RAND_MAX 之间的随机数值,RAND_MAX 定义在 stdlib.h,(其值至少为 32767) 我运算的结果是一个不定的数,要看你定义的变量类型,int 整形的话就是 32767。 在调用此函数产生随机数前,必须先利用 srand() 设好随机数种子,如果未设随机数种子,rand() 在调用时会自动设随机数种子为 1。一般用 for 语句来设置种子的个数。具体见下面的'例子。

    一、如何产生不可预见的随机序列呢

    利用 srand((unsigned int)(time(NULL)) 是一种方法,因为每一次运行程序的时间是不同的。

    在 C 语言里所提供的随机数发生器的用法:现在的 C 编译器都提供了一个基于 ANSI 标准的伪随机数发生器函数,用来生成随机数。它们就是 rand() 和 srand() 函数。这二个函数的工作过程如下:

    1) 首先给 srand() 提供一个种子,它是一个 unsigned int 类型,其取值范围从 0~65535;

    2) 然后调用 rand(),它会根据提供给 srand() 的种子值返回一个随机数 (在 0 到 32767 之间)

    3) 根据需要多次调用 rand(),从而不间断地得到新的随机数;

    4) 无论什么时候,都可以给 srand() 提供一个新的种子,从而进一步 “随机化”rand() 的输出结果。

    下面是 0~32767 之间的随机数程序:

    #include

    #include

    #include//使用当前时钟做种子

    void main(void)

    {int i;

    srand((unsigned)time( NULL ) );   // 初始化随机数

    for(i = 0; i < 10;i++)       // 打印出 10 个随机数

    printf("%d

    ", rand() );

    }

    根据上面的程序可以很容易得到 0~1 之间的随机数:

    #include

    #include

    #include

    int main( )

    {int i;

    srand((unsigned)time( NULL ) );

    for(i = 0; i < 10;i++)

    printf("%5.2f

    ", rand()/32767.0);

    }

    而产生 1~100 之间的随机数可以这样写:

    #include

    #include

    #include

    int main( )

    {

    int i;

    srand((unsigned)time( NULL ) );

    for(i = 0; i < 10;i++)

    printf("%d

    ", rand()%100+1);

    }

    come from http://hi.baidu.com/akaneyu

    二、三个通用的随机数发生器,推荐用第三个

    函数名: rand

    功 能: 随机数发生器

    用 法: void rand(void);

    程序例:

    #include

    #include

    int main(void)

    {

    int i;

    printf("Ten random numbers from 0 to 99

    ");

    for(i=0; i<10; i++)

    printf("%d

    ", rand() % 100);

    return 0;

    }

    函数名: random

    功 能: 随机数发生器

    用 法: int random(int num);

    程序例:

    #include

    #include

    #include

    /* prints a random number in the range 0 to 99 */

    int main(void)

    {

    randomize();

    printf("Random number in the 0-99 range: %d

    ", random (100));

    return 0;

    }

    函数名: randomize  这个比较好!

    功 能: 初始化随机数发生器

    用 法: void randomize(void);

    程序例:

    #include

    #include

    #include

    int main(void)

    {

    int i;

    randomize();

    printf("Ten random numbers from 0 to 99

    ");

    for(i=0; i<10; i++)

    printf("%d

    ", rand() % 100);

    return 0;

    }

    在《计算机常用算法》中有介绍随机数的生成算法

    三、如何产生设定范围内的随机数

    由于 rand 产生的随机数从 0 到 rand_max,而 rand_max 是一个很大的数,那么如何产生从 X~Y 的数呢?

    从 X 到 Y,有 Y-X+1 个数,所以要产生从 X 到 Y 的数,只需要这样写:

    k=rand()%(Y-X+1)+X;

    这样,就可以产生你想要的任何范围内的随机数了。

    四、产生不重复的随机数

    1)

    #include

    #include

    #include

    swap(int *pm,int *pn)  /* 必须用指针进行交换 */

    {

    int temp;

    temp=*pm;

    *pm=*pn;

    *pn=temp;

    }

    int main(void)

    {

    int i,a[513];

    /*int *pa,*pb;*/

    srand((unsigned)time( NULL ) ); /* 定义这个可以产生不同的随机数 */

    for(i=1; i<=512; i++){a[i]=i;printf("%4d",a[i]);}

    for(i=512; i>=1; i--)

    {

    /* pa=&a[i]; pb=&a[rand()%i+1];*/

    swap(&a[i], &a[rand()%i+1]);  /* 加一是从一到 i 的随机,就不会包含 0*/

    /* 不用再定义指针,这样结论是一样的 */

    }

    printf("

    ") ;

    for(i=1; i<=64; i++)

    printf("%4d",a[i] );

    getch(); /*wintc 的输出 */

    }

    2)

    #include

    #include

    #include

    int main(void)

    {

    int a[100]={0}; int i,m;

    for(i=1; i<=99; ++i)

    printf("%4d",a[i] );

    srand((unsigned)time( NULL ) );

    for(i=1; i<=99; i++)

    {

    while(a[m=rand()%100+1]);

    a[m] = i;

    }

    for(i=1; i<=99; ++i)

    printf("%4d",a[i] );

    getch();

    }

    【C语言产生随机数的方法】相关文章:

    更多相关内容
  • c语言生成1~100随机数

    千次阅读 2021-05-21 05:26:09
    C语言如何srand和rand函数产生10个1-100内的随机数10个是任意的,也可能是100个,1-100...C语言, 生成1到100间的随机数, 下面两种方法有什么1.(int)(100.0*rand()/(RAND_MAX+1.0))+1 2.rand()%100+1假设第一次rand返...

    C语言如何srand和rand函数产生10个1-100内的随机数

    10个是任意的,也可能是100个,1-100也是任意的。。。CSS布局HTML小编今天和大家分享解,详细的有追加

    需要准备的材料分别有:电脑、C语言编译器。

    9a61502719944bb07be208303551500f.png

    C语言, 生成1到100间的随机数, 下面两种方法有什么1.(int)(100.0*rand()/(RAND_MAX+1.0))+1 2.rand()%100+1

    假设第一次rand返回1010 第二次rand返回2010 rand_max假设为4000 1,100*(1010/4001)+1约等于100*(1/4)+1=26 2,100*(2020/4001)+1=51 约等于 100*(1/2)+1=51 3,1010%100+1=11 4,2010%100+1=11 第一个式子扩大了随机数波动对结果的影响 尽

    欢迎来到CSS布局HTML,怎样用c语言输出一个1到100的随机数

    源程序如下: #include "pch.h" #include #include using namespace std; int main() { const int n = 10000; int number[n] = { NULL }; srand((unsigned)time(NULL)); number[0] = rand() % n; //第一个随机数无需比较 cout

    c语言生成1 - 100的不重复随机数

    #define _C_SECURE_NO_WARNINGS #include #include #include #include #include int main() { /*1到100随机不重复数*/ int randnum[100]; srand((unsigned int)time(NULL)); randnum[0] = rand() % 100 + 1; for (int i = 0;i < 100;i++) { fl

    C语言中产生0—1的100个随机数

    请大家帮帮忙~~如何用C语言产生0—1之间的100个随机数

    #include"time.h" #include"stdio.h" #include"stdlib.h" #include"malloc.h" #define N 10 #define LIST_INIT_SIZE 100 struct LIST { int *elem; int length; int listsize; }; typedef struct LIST List; void List_Init(List *L) { L->elem=

    怎样用c语言产生0-100随机数?CSS布局HTML小编今天和大家分享助高手

    随机生成函数用 randomize(); x=random(100); 为啥在tc3里运行不了啊?你把下面的15改成100就行了 键盘输入不同种子,得不同的0-15无重复随机数 #include #include main() { int seed=1000; // 种子 int i; int m[16] ; int nn=0; double r; printf("enter seed please\n"); scanf("%d",&seed); srand(seed); // 初

    C语言怎么产生0-100之间1个随机数

    #include #include #include void main() 因为rand()产生的伪随机数 在b=rand()%100;前加一句srand(time(0)); 就好了

    想生成1~13的随机数,详细点,最好带上一段完整的代码

    设计一个C语言程序 猜数游戏 规则:电脑随机产生一设计一个C语言程序 猜数游戏 规则:电脑随机产生一个1-100的随机数让玩#include #include #includeint main(void){int rst,g;int guesscount;//用随机函数了srand( time(NULL) );printf("猜数游戏,输入-1退出.\r\nLet's go 。\r\n\r\n");do{//生成随机数rst = (int)((double) rand() /(double) RAND_MAX * 100);//重

    展开全文
  • 代码】c语言实现1-100生成随机数猜数字是否与自己输入的数字一致。

     

    #define _CRT_SECURE_NO_WARNINGS scanf_s
    #include<string.h>
    #include<stdio.h>
    #include<stdlib.h>//rand的头文件并且返回类型是整形
    #include<time.h>//time的头文件
    void game()
    {
    	int guess = 0;//输入的数字
    
    	int ret = rand()%100+1;//这样生成的余数是1-100系统生成的随机数
    	while (1)//无限循环
    	{
    		printf("请输入数字\n");
    		scanf("%d", &guess);
    		if (guess > ret)
    		{
    			printf("猜大了\n");
    		}
    		else if (guess < ret)
    		{
    			printf("猜小了\n");
    		}
    		else
    		{
    			printf("猜对了\n");
    			break;//猜对跳出循环
    		}
    	}
    }
    void menu()
    {
    	printf("***************************\n");
    	printf("******1.选择游戏***********\n");
    	printf("******0.退出游戏***********\n");
    	printf("***************************\n");
    }
    void main()
    {
    	int input;
    	srand((unsigned int)time(NULL));//生成随机数,并且必须在srand的前面,而且还要有time的头文件
    	do
    	{
    		menu();
    		printf("请输入要选择的序列号\n");
    		scanf("%d", &input);
    		switch (input)
    		{
    		case 1:game(); break;
    		case 0:printf("退出游戏\n"); break;
    		default:printf("选择错误,请重新选择\n"); break;
    		}
    	} 
    	while (input);
    }

     

    展开全文
  • c语言--随机数

    2021-09-07 17:30:14
    C语言中,一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数: int rand (void); 种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;也就是说,每次启动计算机以后,种子就是...

    在C语言中,一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数:

    int rand (void);
    

    种子在每次启动计算机时是随机的,但是一旦计算机启动以后它就不再变化了;也就是说,每次启动计算机以后,种子就是定值了,所以根据公式推算出来的结果(也就是生成的随机数)就是固定的。
    可以通过 srand() 函数来重新“播种”,这样种子就会发生改变。

    void srand (unsigned int seed);
    

    使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒)

    srand((unsigned)time(NULL));
    

    生成一定范围内的随机数

    int a = rand() % 10;    //产生0~9的随机数,注意10会被整除
    

    每次生成0-99范围内的随机数。
    代码示例:

     1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <time.h>
      4 enum DAY{ MON =1,TUE,WED,THU,FRI,SAT,SUN};
      5 
      6 int main()
      7 {
      8   int sum =18,cnt =3;
      9   double mean;
     10   enum DAY day;
     11   int i;
     12   int a;
     13   srand((unsigned)time(NULL));
     14   a =rand()%100;
     15 
     16   mean=(double)sum/cnt;
     17   printf("mean is %f\n",mean);
     18   printf("day is %d\n",day);
     22   printf("a is %d\n",a);
     23   return 0;
     24 }
    

    连续生成随机数:

     1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <time.h>
      4 enum DAY{ MON =1,TUE,WED,THU,FRI,SAT,SUN};
      5 
      6 int main()
      7 {
      8   int sum =18,cnt =3;
      9   double mean;
     10   enum DAY day;
     11   int i;
     12   int a;
     13   srand((unsigned)time(NULL));
     14  // a =rand()%100;
     15 
     16   mean=(double)sum/cnt;
     17   printf("mean is %f\n",mean);
     18   printf("day is %d\n",day);
     19   for (i=0;i<10;i++){
     20    // srand((unsigned)time(NULL));
     21     a =rand()%100;
     22     printf("a is %d\n",a);
     23   }
     24   return 0;
     25 }
    

    结果:

    accu@ubuntu:~/C/CEX/ex8_int$ ./a.out
    mean is 6.000000
    day is -1763155424
    a is 69
    a is 69
    a is 69
    a is 69
    a is 69
    a is 69
    a is 69
    a is 69
    a is 69
    a is 69
    accu@ubuntu:~/C/CEX/ex8_int$ vim main.c
    accu@ubuntu:~/C/CEX/ex8_int$ gcc main.c
    accu@ubuntu:~/C/CEX/ex8_int$ ./a.out
    mean is 6.000000
    day is 608382928
    a is 7
    a is 40
    a is 34
    a is 47
    a is 58
    a is 66
    a is 99
    a is 24
    a is 52
    a is 65
    

    放在循环内不能生成随机数,因为srand语句在循环内,每一次都用时间做种,程序执行速度很快,所以获取时间精度内,数值不变,于是每一次循环都是一样的,如果把srand()放在循环外,就能产生不同的不同的序列。

    展开全文
  • c语言生成随机数

    千次阅读 2022-03-08 20:25:52
    rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。RAND_MAX 是 <stdlib.h> 头文件中的一个宏,它用来指明 rand() 所能返回的随机数的最大值。C语言标准并没有规定 RAND_MAX 的具体数值,只是规定它的值...
  • 任务一:从键盘输入1个字符,编程输出其前趋字符和后继字符,以其ASCII码 任务二:随机产生100个10—300之间的整数,找出其中的最小数 任务三:随机产生100个10—300之间的整数,按从小到大的顺序排序输出............
  • c语言--生成1~20内无重复的随机数

    千次阅读 2022-01-14 14:09:04
    生成1~20内无重复的随机数 思路: 1生成单个随机数,并依次存放入数组中 2、将1生成随机数与之前的随机数对比 3、若重复,则说明随机数无效,数组下标减1,重复1、2步骤;若不重复,则说明随机数有效,重复1、2...
  • c语言生成一组不同的随机数,大家参考使用吧
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼下面C语言代码使用了生成随机数的函数、延时函数。请大家仔细观察其显示效果。从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定修改。...
  • C语言生成[0,1)之间的随机浮点数

    千次阅读 2020-07-19 20:36:42
    如何用C语言生成(0,1)之间的随机浮点数? - Milo Yip的回答 - 知乎 https://www.zhihu.com/question/25037345/answer/29879012 #if RAND_MAX == 0x7fffffff // Return [0, 1) float randf() { int r = (rand() >...
  • c语言中实现从0-1随机数输出

    千次阅读 2014-12-12 16:13:00
    原文:c语言中实现从0-1随机数输出 今天晚上同学问了一个巨简单的问题,问我怎么用c语言输出0-1随机数,可别说,一时之间还想不出来。在写的过程中发现,直接调用random函数还不能实现,用以下方法可以解决...
  • C语言中,我们一般使用 头文件中的 rand() 函数来生成随机数int void rand()可是却发现生成的数字都一样。这是因为rand()函数产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,而这个数值由一个...
  • 11. 在一个双链表中结点p之后插入一个...有些事,有些人,就应该忘记,深交太多只会伤害自己大工11秋《数据结构》在线作业1 一,单选题 1. B 2. B 3. B 4. A 5. A 6. C 7. B 8. B 9. C 10.B 二,判断题 1.B 2.A 3.B...
  • C语言随机数生成

    2022-05-07 19:18:31
    #include <... //随机数生成种子 int tmp = 0; for (int i = 0; i < 10; i++) { tmp = rand()%100+1; //生成1-100的随机整数 printf("%d\n", tmp); } return 0; } 在实际使用时不要
  • C语言生成0-9的6位数密码递归方法实现(简单高效) 这东西我想了很久,至少两天,我在百度上也没找到,所以我把我想的与大家分享下:不到位的,请各位大神原谅,大致思路如下:通过一个函数递归生成所的有6位排例,...
  • 用 c 语言产生随机数C语言中 ,rand() 函数可以用来产生随机数,但是这不是真真意义上的随机数, 是一个伪随机数, 是根据一个数, 我们可以称它为种子,为基准以某个递推公式推算出来的一系数, 当这系列数很大的...
  • c语言生成 o~100随机数

    万次阅读 2016-02-25 20:45:32
    还在学习中,先贴上代码,等待以后自己解答,第二种为什么编译失败! #include #include ...#define TRUE 1 #define FALSE 0 int main(void) { //正确的 /*  int chosen=0; int i
  • 有时候我们需要得到某个区间的不重复随机数,比如我们想获得1-100的不重复随机数方法如下1、数组公式直接生成比较炫技的解法,在A1单元格输入以下公式,然后按下ctrl+shift+enter ,这是一个数组公式=SMALL((COUNTIF...
  • c语言随机数(c语言生成1~100随机数)

    千次阅读 2021-05-19 07:39:32
    最低0.27元开通文库会员,查看完整内容> 原发布者:水瓶酒窝哥 随机数的产生方法瑞达路水瓶酒窝哥由于老师布置了产生... for(i=0;iC语言中有自己的随机数函数rand() 其原型为 int rand(); 功能为获取一个随...
  • 在C言语中是怎样生成1~100的随机数的呢?想必人人都想相识一下吧,那末话不多说,跟着小编一同相识一下吧。C言语怎样生成随机数生成10个1~100的随机数空话不多说直接上程序。#include#include#include int main(){...
  • C语言 生成不重复随机数

    千次阅读 2021-09-14 16:53:59
    #include <stdio.h> #include <stdlib.h> #include <time.h> int main() ... int list[10], j, ...//设置随机数种子。 for(int i = 0; i < 10; i ++) { while(1) { randTmp = rand()%100; //
  • C语言-指定范围下随机数生成

    千次阅读 2020-03-24 23:36:13
    C语言随机数的使用,生成由a到b范围的随机数方法。
  • 一 说起随机函数,恐怕又有人说这是老生长谈了……一般很多人都形成了自己的固定格式,因为随机数用处比较大,用的时候比较多,拿过来就用了。但是新手不这么 干,他们总是抱有疑惑,我就是一个新手,而且较菜……...
  • C++ 产生0-1之间的随机数

    万次阅读 多人点赞 2018-06-07 17:14:24
    要产生0-1之间的浮点数,必须经过转换才能得到。思路:生成一个0-N的随机数,然后对其处以N+1,则可以得到浮点型随机数。N可以确定产生的精度。比如需要2位小数,则N=99,需要3位小数,则N=999。代码如下:#include &...
  • C语言生成随机数的方法

    千次阅读 2022-03-25 17:56:12
    以上就是今天要讲C语言生成随机数的内容,包含rand、srand和time函数的使用,希望对刚刚阅读本篇博客的你有所帮助。
  • rand-C语言随机数范围

    千次阅读 2021-11-16 15:23:27
    rand() C语言随机数范围 1.简介 rand()函数用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。 rand()会返回一个范围在0到RAND_MAX(至少...
  • 源程序如下:#include"pch.h"#include<iostream>#include<time.h>usingnamespacestd;intmain(){constintn=10000;intnumber[n]={NULL};srand((unsigned)time(NULL));...//第一个随机数无需比较cout...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,753
精华内容 7,501
关键字:

c语言生成0-1的随机数

友情链接: min_system.rar