Advertisement
terjanq

unfairCoin solution

Sep 19th, 2023
837
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class UnfrairCoin{
  2.     constructor(){
  3.         this.probability = Math.random();
  4.     }
  5.     get(){
  6.         return Math.random() > this.probability ? 1: 0
  7.     }
  8. }
  9.  
  10. class FairCoin{
  11.     constructor(){
  12.         this.unfairCoin = new UnfrairCoin();
  13.     }
  14.     get(){
  15.        let first = this.unfairCoin.get();
  16.        const unfairCoin = this.unfairCoin;
  17.        let xor = first;
  18.         function helper(){
  19.             const coin = unfairCoin.get();
  20.           if(coin !== first){
  21.               return xor;
  22.           }
  23.           xor ^= 1;
  24.            return helper();
  25.         }
  26.       return helper();
  27.     }
  28. }
  29.  
  30.  
  31. var fairCoin = new FairCoin();
  32. var arr = Array.from(Array(1000), ()=>fairCoin.get());
  33. var arr2 = Array.from(Array(1000), () => Math.random() > 0.5 ? 1 : 0);
  34.  
  35. console.log(fairCoin.unfairCoin.probability, arr.filter(x=>x).length, arr2.filter(x=>x).length);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement