玩命加载中 . . .

C语言和Java中生成随机数


在实际编程中,我们经常需要生成随机数,例如,实现排序算法的时候通过生成随机数来测试算法的可行性

C语言生成随机数

在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。
RAND_MAX 是 <stdlib.h> 头文件中的一个宏,它用来指明 rand() 所能返回的随机数的最大值。C语言标准并没有规定 RAND_MAX 的具体数值,只是规定它的值至少为 32767。在实际编程中,我们也不需要知道 RAND_MAX 的具体值,把它当做一个很大的数来对待即可。

在使用rand()函数前需要一条语句进行随机数初始值的设置 。

srand((unsigned)time(NULL));  //如果不加上的话会导致每次生成的随机数一样

用系统时间进行随机数初始值的设置。函数time()返回以秒计算的当前时间值,该值被转换为无符号整数并用作随机数发生器的种子。作为一个随机数实际上是一个伪随机数,并不是实际意义上的随机,仅仅是通过一定的数学方法(不同的数学方法产生满足不同分布的随机数序列),从一个初始值生成的一个序列,因此这个初始值如果雷同的话,生成的随机数也是相同的。因此在第一次使用rand函数前,需要使用srand函数,我们可以通过 srand() 函数来重新“播种”,这样种子就会发生改变。

生成随机数需要用到的头文件为:

#include<stdio.h>  
#include<time.h>  //time()函数
#include<stdlib.h> //srand()函数

下面是一个随机数生成的实例:

#include<stdio.h>
#include<time.h>
int main()
{
    srand((unsigned)time(NULL));
    int arr[10];
    int i;
    for(i=0;i<10;i++)
        arr[i]=rand();
    for(i=0;i<10;i++)
        printf("%d ",arr[i]);
}

运行结果:

生成一定范围内的随机数
在实际的编程中,我们往往需要确定随机数的范围,可以利用取模的方法:

int a=rand()%100;

则a为0-99的随机数

若要规定上下限,如生成的数的范围为45-87,则代码如下:

int a=rand()%43+45;

分析:rand%43生成了0-42的随机数,+45则表示a的最小值为43,最大值为45

Java生成随机数

在Java中生成随机数需要使用rand()函数,借助java.util.Random类来产生一个随机数发生器,构造函数有两个,Random()和Random(long seed)。
第一个就是以当前时间为默认种子,每次生成不一样的随机数。
第二个是以指定的种子值进行,使用第二个构造方法每次产生随机数的值会相同。

随机数生成实例:

import java.util.Random;

public class Rand {
    public static void main(String args[]) {
        int a[]=new int[10];     //声明创建长度为10的一维数组
        Random ran=new Random();
        int i;
        //生成随机数组并输出
        for(i=0;i<a.length;i++)
        {
            a[i]=ran.nextInt(1000)+1;       // 把范围为1-1000的随机整数复制给a[i]
            System.out.print(a[i]+" ");     // 输出a[i]
        } 
    }
}

运行结果:


文章作者: topking
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 topking !
评论
 上一篇
排序算法之归并排序 排序算法之归并排序
归并排序归并:将两个或两个以上的有序表组合成一个新有序表主要的思想:划分,求解子问题,综合解利用递归的分治方法:1、将原序列细分,直到成为单个元素2、在将分割后的序列一层一层地按顺序合并,完成排序。细分通过不断深入递归完成,合并通过递归一
2020-04-18
下一篇 
Linux  Shell编程 Linux Shell编程
Shell 编程概述 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语
2020-04-12
  目录