Solve rand7
Write a random number generator for [0,7) using only a random number generator for [0,5). Ensure the results are uniformly distributed.
This commit is contained in:
		
							parent
							
								
									a0e9e2b310
								
							
						
					
					
						commit
						5820f6f459
					
				
					 1 changed files with 22 additions and 0 deletions
				
			
		
							
								
								
									
										22
									
								
								scratch/facebook/moderate/rand7.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								scratch/facebook/moderate/rand7.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | |||
| # Define a function, rand7, that generates a random number [0,7), using only | ||||
| # rand5, which generates a random number [0,5). | ||||
| 
 | ||||
| import random | ||||
| from collections import Counter | ||||
| 
 | ||||
| # Returns [0,4] | ||||
| def rand5(): | ||||
|     return random.randint(0,4) | ||||
| 
 | ||||
| def rand4(): | ||||
|     x = rand7() | ||||
|     if x >= 4: | ||||
|         return rand4() | ||||
|     return x | ||||
| 
 | ||||
| # Return [0,6] | ||||
| def rand7(): | ||||
|     return sum(rand5() for _ in range(7)) % 7 | ||||
| 
 | ||||
| c = Counter([rand4() for _ in range(100000)]) | ||||
| print(c) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue