Unbias a random generator: Difference between revisions

m (→‎{{header|J}}: format inline code)
Line 42:
 
=={{header|Java}}==
{{incomplete|Java|It doesn't adequately generate and show counts of the outputs of randN and unbiased(randN) '''over the range of N'''.}}
<lang java>public class Bias{
public static int biased(int probOf1Denom){
if(Math.random() < 1.0 / probOf1Denom){
return 1;
}else{
return 0;
}
}
}
}
 
public static int unbiased(int probOf1Denom){
int rand1 = biased(probOf1Denom);
int rand2 = biased(probOf1Denom);
while(rand1 == rand2) {
rand1 = biased(probOf1Denom);
rand2 = biased(probOf1Denom);
}
}
return rand1;
}
}
 
public static void main(String[] args){
for(int probDenom = 6; probDenom >= 3; probDenom--){
int biased1 = 0, biased0 = 0, unbiased1 = 0, unbiased0 = 0;
int biased1 = 0, biased0 = 0, unbiased1 int= 0, probDenomunbiased0 = 60;
for(int i = 0; i < 1000; i++){
if(biased(probDenom) == 1){
biased1++;
}else{
biased0++;
}
}
if(unbiased(probDenom) == 1){
 
unbiased1++;
if(unbiased(probDenom) == 1){
}else{
unbiased1++;
unbiased0++;
}else{
}
unbiased0++;
}
}
System.out.println("1 / " + probDenom + " bias:");
}
System.out.println("Biased 1 percentage: " + biased1 / 10.0); //1000 generations
System.out.println("Biased 0 percentage: " + biased0 / 10.0);
System.out.println("Unbiased 1 percentage: " + unbiased1 / 10.0);
System.out.println("Unbiased 1 percentage: " + unbiased0 / 10.0);
}
}
}
}</lang>
}
}</lang>
Output:
<pre>Biased 1 percentage:/ 17.36 bias:
Biased 01 percentage: 8218.73
UnbiasedBiased 10 percentage: 5181.97
Unbiased 1 percentage: 4849.1</pre>7
Unbiased 1 percentage: 50.3
1 / 5 bias:
Biased 1 percentage: 20.1
Biased 0 percentage: 79.9
Unbiased 1 percentage: 49.3
Unbiased 1 percentage: 50.7
1 / 4 bias:
Biased 1 percentage: 26.1
Biased 0 percentage: 73.9
Unbiased 1 percentage: 51.2
Unbiased 1 percentage: 48.8
1 / 3 bias:
Biased 1 percentage: 33.5
Biased 0 percentage: 66.5
Unbiased 1 percentage: 49.3
Unbiased 1 percentage: 50.7</pre>
 
=={{header|Python}}==
Anonymous user