問題:有函式rand01()能夠等概率的生成0和1,用rand01生成rand(n),使其能夠等概率的生成0-n-1的整數。
java程式碼:
1 public int rand(int n){ 2 while(true){ 3 int bits=(int)Math.ceil((Math.log(n)/Math.log(2))); 4 int v=0; 5 for(int i=0;i<bits;i++){ 6 if(random01()==1){ 7 v|=(1<<i); 8 } 9 } 10 if(v<n){ 11 return v; 12 } 13 } 14 }