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


    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!

  • 相关阅读:
    Hibernate的检索
    Java 多线程
    可信软件开发
    Linux复习3
    Linux复习2
    Linux复习1
    使用Sourcetree(for windows)建立github同步仓库
    Session技术
    Cookie技术
    Ajax技术
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3822177.html
Copyright © 2020-2023  润新知