rand()和srand()生成随机数 - 掷骰子游戏

Rand()和srand()配合产生随机数 - 掷骰子游戏

/*rand() - 随机数生成器 使用方法
 * rand(0,RAND_MAX)生成的数字在0~RAND_MAX区间
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    int second;
    second = time(NULL);
    printf("%d秒\n", second);//1615289304秒


    int object;
    srand(1223);
    // 没有srand函数的话, 每次执行都使用同一个随机数种子,
    // 反复运行程序,都会得到一摸一样的输出结果, 所以我们需要srand()和rand()配合使用
    // 避免每次出现相同的随机数序列
    // 只要修改srand(123)中的整数123,就可以得到不同的序列
    object = rand();
    printf("object = %d\n", object);
    object = rand();
    printf("object = %d\n", object);
    object = rand();
    printf("object = %d\n", object);
    printf("RAND_MAX = %d\n", RAND_MAX);


    return 0;
}
//object = 16807
//object = 282475249
//object = 1622650073
//RAND_MAX = 2147483647
/*
 * 练习4-19
 * 从键盘读入一个整数n,然后模拟掷骰子n次, 如果整数n<1, 则输出"非法数据".
 * 使用for循环语句完成
 *
 * 思路:
 * 1。 骰子有6个面, 分别对应数字1、2、3、4、5、6
 * 2。 使用以下函数srand, rand, time()
 * 3。 函数rand生成的随机数位于区间[0,RAND_MAX]
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//由于计算机的运行速度非常快,因此设置种子是不能在for循环中进行的
//否则会造成很多次种子是一样的,造成产生的值也一样的后果
int main() {
    int a = 0; //掷骰子次数

    printf("模拟掷骰子次数: \n");
    scanf("%d", &a);

    srand((unsigned )time(0)); //把srand随机数种子放在循环外面,避免投掷出来的数字重复
    if (a < 1) {
        printf("非法数据");
    }else
        for (int i = 1; i <= a ; i++) {
            printf("第%d次投掷: %d\n",i, rand()%6+1 );
        }
    return 0;
}
//模拟掷骰子次数:
//6
//第1次投掷: 2
//第2次投掷: 4
//第3次投掷: 2
//第4次投掷: 4
//第5次投掷: 3
//第6次投掷: 6
posted @ 2021-03-09 19:26  NTE701  阅读(545)  评论(0)    收藏  举报
1