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

浙公网安备 33010602011771号