栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言随机数的生成---入门篇

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言随机数的生成---入门篇

一.rand函数和srand函数

在c语言中比较常用的随机函数就是rand函数,它可以随机的产生0~rand_max的随机数,定义类型不同,最大值也不同,rand函数包含在头文件stdlib.h中。

#include 
#include 
int main()
{
       int a=rand();
       printf("%d",a);
       return 0;
}

你会发现每次产生的随机数都是相同的,因为rand函数产生的随机数是伪随机数,是根据一个数按照某个公式推算出来的,这个数我们称之为“种子”,但是这个种子在系统启动后就是一个定值。

要想每次产生的随机数不一样,那么,我们就要用到srand函数。

如何产生随机数

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
//	long t = time(NULL);//因为时间是不断变化,每次运行程序,时间变化了,随机的种子就变化了,序列就变化了
//	srand(t);
	srand(time(NULL)); //初始化随机种子是
	while(1)
	{
		int num = rand();//如果直接调用rand函数,得到的是伪随机数
		printf("num is %dn",num % 35 + 1);
		sleep(1);
	}
	return 0;
}	

经典例题!!

1.随机生成一个1 - 10的数,让对方猜5次,如果猜对了,提示"congratulations !!"  如果猜错了,提示"bigger" 或 "smaller"

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	//1.要想生成随机数,必须先初始化随机种子
	srand(time(NULL));
	//生成一个随机数,给别人猜
	int num = rand() % 10 + 1;
	int a,i;//用来保存输入猜的数
	for(i = 0; i < 5; i++)
	{
		scanf("%d",&a);
		if(a == num)
		{
			printf("恭喜你,猜对了!!n");
			break;
		}
		else if(a > num)
		{
			printf("大了!!n");
		}
		else // a < num 
		{
			printf("小了!!n");
		}
	}
	return 0;
}	

2.中国福利彩票35选7
    
        随机生成1-35内不重复的7个数字
        然后让用户选择自己的一组号码
        中奖规则:猜中
        
        7个500万
        6个100万
        5个1万
        4个5000
        3个500
        0,1,2个没中奖
        
    //1. 生成7个中奖号码 int lotteryNum[7]//注意生成7个中奖号码,有可能重复, 中奖号检测去重
    //2. 输入7个数,买彩票 int myMum[7]; //手动输入7个数
    //3. 统计中奖个数 
    //4. 打印输出中奖信息

#include 
#include 
#include 

int main(int argc, const char *argv[])
{
	int i,j;
	int lotteryNum[7];//保存7个中奖号码
	int myNum[7];//保存购买的7个中奖号码
	int count = 0;//用来统计中奖号码的个数
	srand(time(NULL));//初始化随机种子
	//1.生成7个随机的中奖号码
	for(i = 0; i < 7; i++)
	{
		lotteryNum[i] = rand() % 35 + 1;
		for(j = 0; j < i; j++)//j代表,用当前刚生成的lotteryNum[i]与前面的已经生成的每一个号码做比计
		{
			if(lotteryNum[i] == lotteryNum[j])//lotteryNum[i]代表的刚生成的号码
			{
			//	printf("出现一次重复号码!!n");
				i--; //i-- 上面的再i++,i的值不变,重新在该位置生成一个随机数
				break;
			}
		}
	}
	//2.输入7个数,购买彩票
	for(i = 0; i < 7; i++)
		scanf("%d",&myNum[i]);
	//3.统计中奖个数
	for(i = 0; i < 7; i++)
	{
		for(j = 0; j < 7; j++)
		{
			if(lotteryNum[i] == myNum[j])
			{
				count++;
			}
		}
	}
	//4.根据中奖个数兑奖
	printf("count is %dn",count);
	switch(count)
	{
	case 7:
		printf("500W!!n");
		break;
	case 6:
		printf("100W!!n");
		break;
	case 5:
		printf("10W!!n");
		break;
	case 4:
		printf("5000!!n");
		break;
	case 3:
		printf("500!!n");
		break;
	default:
		printf("重在参与!!n");
	}

	//调试程序
	printf("中奖号码:");
	for(i = 0; i < 7; i++)
		printf("%d ", lotteryNum[i]);
	printf("n");
	
	printf("购买号码:");
	for(i = 0; i < 7; i++)
		printf("%d ", myNum[i]);
	printf("n");
	
	printf("中奖个数%d个!!n",count);

	return 0;
}	

接下来我会继续补充相关知识~~刚刚开始!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号