Include re-roll strategy for rand7
After seeing the solution that my book advocated, I implemented it using recursion.
This commit is contained in:
		
							parent
							
								
									5820f6f459
								
							
						
					
					
						commit
						09cd819a70
					
				
					 1 changed files with 11 additions and 8 deletions
				
			
		|  | @ -8,15 +8,18 @@ from collections import Counter | |||
| def rand5(): | ||||
|     return random.randint(0,4) | ||||
| 
 | ||||
| def rand4(): | ||||
|     x = rand7() | ||||
|     if x >= 4: | ||||
|         return rand4() | ||||
|     return x | ||||
| 
 | ||||
| # Return [0,6] | ||||
| def rand7(): | ||||
| def rand7_a(): | ||||
|     return sum(rand5() for _ in range(7)) % 7 | ||||
| 
 | ||||
| c = Counter([rand4() for _ in range(100000)]) | ||||
| # Return [0,6] | ||||
| def rand7_b(): | ||||
|     x = 5 * rand5() + rand5() | ||||
|     if x < 21: | ||||
|         return x % 7 | ||||
|     return rand7_b() | ||||
| 
 | ||||
| c = Counter([rand7_a() for _ in range(100000)]) | ||||
| print(c) | ||||
| c = Counter([rand7_b() for _ in range(100000)]) | ||||
| print(c) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue