En Raspberry Pi-baserade verkligen slumpgenerator (2 / 3 steg)
Steg 2: kod
#! / usr/bin/env python
#Uses flytande ingångar på GPIO4, GPIO17 och GPIO22 att generera slumpmässiga nummer
#Outputs till GPIO 25 när ett nytt nummer och skickar numret till STDOUT
importera RPi.GPIO som GPIO
importera sys
från att importera sömn
GPIO.setmode (GPIO. BCM)
def getRBit (pin1 PIN2-, pin3, TTS-): #gets en slumpmässig uppsättning bitar, XORs dem, och utgångar en random bit
bit1 = 0
bit2 = 0
bit3 = 0
bitv = 0
GPIO.setup (pin1, GPIO. I)
GPIO.setup (pin2, GPIO. I)
GPIO.setup (pin3, GPIO. I)
Sleep(TTS) #Sleep så att Processorn kan röra runt och ändra EMF miljön
bit1 = GPIO.input(pin1)
om bit1:
bit1 = 1
annat:
bit1 = 0
Sleep(TTS) #Sleep så att Processorn kan röra runt och ändra EMF miljön
bit2 = GPIO.input(pin2)
om bit2:
bit2 = 1
annat:
bit2 = 0
Sleep(TTS) #Sleep så att Processorn kan röra runt och ändra EMF miljön
bit3 = GPIO.input(pin3)
om bit3:
bit3 = 1
annat:
bit3 = 0
#Now gör några XOR logik
bitv = bit1 ^ bit2
ut = bitv ^ bit3
återvända ut
def getRInt (x, pin1, pin2, pin3, pin4, TTS-= 0,01): #get en x-bitars nummer av looping genom en sträng ett gäng. Pin4 är LEDout.
GPIO.setup (pin4, GPIO. OUT)
binstr = "" #Set upp till omvandlas till binärt
Skriv ut = 0
rbit = 0
Jag = 0
för jag i intervall (0, x-1):
Jag + = 1
rbit = getRBit (pin1 PIN2-, pin3, TTS)
binstr = binstr + str(rbit)
#print(binstr) # för debug ändamål
Skriv ut = int (binstr, 2)
GPIO.output (pin4, True)
Sleep(0.2)
GPIO.output (pin4, falskt)
returnera Skriv ut
samtidigt sant:
skriva ut (getRInt (64, 4, 17, 22, 25, 0,01)) #bits, in1, in2, in3, ut, tts