前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >改变随机数中一些值的概率

改变随机数中一些值的概率

作者头像
全栈程序员站长
发布2022-07-09 10:48:20
5300
发布2022-07-09 10:48:20
举报
文章被收录于专栏:全栈程序员必看

The problem:

掷骰子游戏中6个点数出现的概率是相等的,抛开这个游戏,那么我们想在随机取1~6的整数时,某些整数被取得的概率变大;

The solution:

思路:将一个整数区间[0,n)分为6份,然后从这个区间随机取得某整数x,则x落到每份中的概率为:若每份等长则落到每份的概率都是相等的;若某份较长则x落到该份的概率较大;以下我取区间为[0,36),当然也可取[0,18),[0,24)等等;

code:[C#,Unity3d圣典]

代码语言:javascript
复制
int  MyRandom()
	{
		int [] QuJian = new int[6];
		int number = 0;
	
		QuJian[0]=6;//每一个数组元素表示该份区间的整数个数;若数组元素都相等表示每份中的整数个数相等,则x落到每份中得概率相等;
		QuJian[1]=9;//明显x落到QuJian[1]的概率大于落到QuJian[2]的概率,但全部的数组元素的和为36;
		QuJian[2]=3;
		QuJian[3]=6;
		QuJian[4]=6;
		QuJian[5]=6;

		int sum_All = 0;
		for(int i = 0;i<6;i++)
		{
			sum_All+=QuJian[i];
		}

		number = Random.Range(0,sum_All);//随机选择整数x

		int sum =0;
		for(int i =0 ;i<6;i++)
		{
			if( number>=sum && number<sum+ QuJian[i])//寻找落到哪个区间
			{
				
				number = i+1;
				break;
			}
			sum+=QuJian[i];
		}
		print("random" + number);
		return number;
	}

GOOD LUCK!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119155.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档