关于随机数的案例及代码:
随机数生成
C语言随机数生成是根据标准时间1970年1月1日来随机生成,所以我们在之前应该导入头文件#include<time.h>,话不多直接上代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
int main() {
srand((unsigned int)time(NULL));
for (int i = 0; i < 20; i++)
{
printf("%d\n", rand() % 11 + 50); //取50-60之间的数
}
}
测试结果
57 52 58 59 60 58 60 58 50 56 请按任意键继续. . .
实验案例(双色球6+1)
双色球规则:一共存在两种球:红球和蓝球,红球上面球号是1-33,蓝球上面是1-16。其中红球的号码不可以有相同号码,但是红色和蓝球互不干扰(即可以号码相同) 。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
int main() {
srand((unsigned int)time(NULL)); //生成随机数种子(只需生成一次)
int dColBall[6];
for (int i = 0; i < 6; i++)
{
dColBall[i] = rand() % 33 + 1; //取1-33的元素
for (int j = 0; j < i; j++)
{
if (dColBall[i] == dColBall[j]) { //判断是否存在相同元素(双色球其中红色球号不可以相同)
i--;
continue; //可以省略
}
}
}
//采用了冒泡排序
for (int i = 0; i < 6 - 1; i++) //每行代表一次最大值到达最顶部(数组末端),第五次已经dColBall[1]元素为第二小元素,最小元素已经是第一个
{
for (int j = 0; j < 6-i-1; j++) { //比较了五次而不是元素六个,所以应该减一,另外也是防止下标越界,下面存在j+1.
if (dColBall[j] > dColBall[j+1]) {
int temp = dColBall[j+1];
dColBall[j+1] = dColBall[j];
dColBall[j] = temp;
}
}
}
printf("此次双色球摇奖号码是:\n");
//输入排序好的红球
printf("=======================================================\n");
printf("\n");
for (int i = 0; i < 6; i++)
{
printf("%d ", dColBall[i]);
}
printf("+ %d\n", rand() % 16 + 1); //取1-16的元素
printf("\n");
printf("=======================================================\n");
int index = rand() % 3 + 1;
switch (index) {
case 1:
printf("恭喜SF获得此次双色球特等奖。\n");
printf("\n");
break;
case 2:
printf("恭喜YWN获得此次双色球特等奖。\n");
printf("\n");
break;
case 3:
printf("恭喜DBB获得此次双色球特等奖。\n");
printf("\n");
break;
}
}
测试结果
此次双色球摇奖号码是:
=======================================================
5 8 11 15 16 18 + 1
=======================================================
恭喜SF获得此次双色球特等奖。
请按任意键继续. . .