随机数产生函数

随机数产生函数  

示例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,i;
    for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);

    }

    getchar();
    return 0;
}

运行结果:

1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
1025202362

再次运行

1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
1025202362

和上面一模一样!得出结论:rand()是伪随机,每次运行的结果一样。那么怎么避免这种“伪随机”呢?那就要另外一个函数srand()配合,srand()它的意思是:置随机数种子。只要种子不同,rand()产生的随机数就不同。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,i;
    srand(100);
    for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

运行结果:

677741240
611911301
516687479
1039653884
807009856
115325623
1224653905
2083069270
1106860981
922406371
876420180

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,i;
    srand(10);
    for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

结果:

1215069295
1311962008
1086128678
385788725
1753820418
394002377
1255532675
906573271
54404747
679162307
131589623

随机数种子不同,产生的结果再不相同。

怎么让它每次生成的都不一样呢,系统的时间是不停变化的,我们是不是可以利用呢?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a,i;
    unsigned int tm = time(NULL);
    srand(tm);
    for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

运行第一次:

1943618223
1373471778
1476666181
2054163504
937505999
1233927247
1056853368
1812086252
862771187
530774611
1117905961

运行第二次:

969995764
349618453
203599721
151758322
444368239
1714632333
2034185210
145622174
1608107639
1863907432
2110476585

运行第三次:

1637559588
1103816085
742512873
331771740
981048319
2136780304
662571564
380818899
1190877608
2101919912
359796216

上面的结果再不相同了,但生成的随机数都比较大,能不能自定义生成在一个范围内的数呢?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a,i;
    unsigned int tm = time(NULL);
    srand(tm);
    for (i=0 ; i<=10 ; i++)
    {
        a = rand()%101; //只生成从0到100之间的随机数
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

运行:

73
26
73
16
3
70
10
37
83
50
40

用取余的方法控制随机数的范围。

时间: 2024-08-06 11:49:10

随机数产生函数的相关文章

PHP获取随机数的函数rand()和mt_rand()

rand()函数用户获取随机数,具体用法如下: rand()可以设置0个参数或者两个参数,如rand($min,$max),$min表示从XX开始取值,$max表示最大只能为XX 例如: <?php echo rand() . "\n";//得到一个不定位数的随机数 echo rand(5, 15);//在5~15之间取一个数 ?> mt_rand() 用法跟rand()类似,但是mt_rand()的执行效率更高,平常使用也推荐用mt_rand(). 博客原文:PHP获取随

随机数产生函数的范围转换

Question: You are given a function rand7() – that generates random numbers from 1-7. Write a function rand10() – that uses rand7() to generate random numbers from 1-10. 这是一个概率分析的问题,你应该对期望值的概念很清楚,概率分析中很重要的概念. 提示: 假设你有一个能产生1-49范围的随机数的函数,怎么产生1-10范围内的随机数

随机图片滚动(随机数+变化函数),可运行

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>随机图片滚动</title> <!--可成功执行,布局有点混乱...懒得改了.需要一个js文件,在上一文章中有--> <style type="text/css"> *{ padding:0; margin: 0;

Oracle中生成随机数的函数(转载)

在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数,其中常用的有以下两个: DBMS_RANDOM.VALUE函数 该函数用来产生一个随机数,有两种用法: 1. 产生一个介于0和1之间(不包含0和1)的38位精度的随机数,语法为: DBMS_RANDOM.VALUE RETURN NUMBER; 这种用法不包含参数. 2. 产生一个介于指定范围之内的38位精度的随机数,语法为: DBMS_RANDOM.VALUE(low IN NUMBER,high IN N

14、位置参数+随机数+数组+函数

位置参数: linux 程序中会大量用到位置参数,位置参数就形如: mkdir a b c d e f g 在以上程序中 mkdir 它自己也是一个参数,它个参数用 $0 表示 后面的参数用 $1 (a) $2(b) $3 (c) 最多到 $10,如果超10,那要用 shift 进行参数移位 参数移位 参数移位就是把后面(右边)的参数,往前(左边)移动,最前面(左边)的参数 覆盖(删除)了,整个参数个数也会少1. 例: a b c d e f g h || || shift || b c d e

一个可以生成不重复随机数的函数(1~INF)

1 #include <iostream> 2 #include <stdio.h> 3 #include <cstring> 4 #include <queue> 5 #include <set> 6 #include <cmath> 7 #include <time.h> 8 #include <cstdlib> 9 #include <algorithm> 10 using namespace

C/C++随机数rand()和种子函数srand()

在计算机编程中,常常要产生一个随机数.但是要让计算机产生一个随机数并不那么容易.计算机的执行,是以代码来进行的,所以并不可能像抽牌,扔骰子那样产生一个真正具有随机意义的数.只可能以一定的算法产生一个伪随机数,C/C++提供了一个函数,放在cstdlib中,叫做rand(),原型为:int rand(void);. 显然,这个函数不接受任何参数,它的作用是:产生一个[0..RAND_MAX]之间的随机数.RAND_MAX也存放在cstdlib中,是一个宏常量: #define RAND_MAX O

C++杂谈(三)产生随机数与time函数

产生随机数在程序中很有用,这篇文章简单介绍一下产生随机数的方法. 伪随机数 使用标准库<cstdlib>中的rand()函数产生随机数. #include<iostream> #include<cstdlib> using namespace std; int main() { for (int i = 0; i < 3; i++) cout << rand()%10 << endl;//pesudo radom return 0; } 表

matlab 全部的随机数函数

matlab 全部的随机数函数 (一)Matlab内部函数 a. 基本随机数 Matlab中有两个最基本生成随机数的函数. 1.rand() 生成(0,1)区间上均匀分布的随机变量.基本语法: rand([M,N,P ...]) 生成排列成M*N*P... 多维向量的随机数.如果只写M,则生成M*M矩阵:如果参数为[M,N]可以省略掉方括号.一些例子: rand(5,1) %生成5个随机数排列的列向量,一般用这种格式 rand(5) %生成5行5列的随机数矩阵 rand([5,4]) %生成一个