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

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

The problem:

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

The solution:

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

code:[C#,Unity3d圣典]

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.net/119155.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月15日 上午11:00
下一篇 2021年11月15日 下午12:00


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号