※ 引述《hirabbitt (兔子)》之铭言:
: 有未知数量的红球与绿球
: 希望给出红球的机率是绿球的三倍
: 不知道应该怎么做比较好
: 有想过先把红绿球分开
: 然后再75%取红的25%取绿的
: 但是因为数量有可能非常庞大
: 使用这种方式虽然精确度100%但是难以保证时间
: 另外也想过先用75%25%决定要红球还绿球
: 目标确定后就一直取取到想要的颜色出现为止
: 但也可能红绿球比例相差过大(例如1颗绿球配99999颗红球)
: 或根本没有某色球而造成无穷循环
: 考虑到根本没有某色球的情况
: 精确度其实没有要求到100%
: 目前我的想法是每次都决定要红球还绿球(一样用75%25%)
: 然后再去取球
: 取出错的颜色时就用75%25%重新决定要红球还绿球
: 不知道有没有其他更好的方式?
: 感谢
int n = totalNum;
int redTotal = ((totalNum*3)/4); // total number of red ball
// 3/4 of total ball in your case
while (n>0)
{
r = rand()*n;
if (r<redTotal){
isRedBall();
redTotal