Forum: Mikrocontroller und Digitale Elektronik Zufallsbit erzeugen


von Mike M. (mikeii)


Lesenswert?

Hi,
ich hab derzeitig folgendes Problem: Ich möchte ein Zufälliges Bit 
erzeugen.

Eine Zufallszahl kann ich ohne Probleme erzeugen, aber wie soll ich 
daraus ein zufälliges Bit erzeugen? Meine Ansätze arten immer in solche 
Folgen aus 
0000000000000111111111111111111111000000000000001111110000011111111

etc.
Ich würde aber eher sowas hier haben 
wollen:01001000100010101011011011010


Danke

von Hans (Gast)


Lesenswert?

> Meine Ansätze arten immer in solche Folgen aus ...

Zeig' doch 'mal deinen Ansatz. Wie gewinnst du das Zufallsbyte?

von Stefanie B. (sbs)


Lesenswert?


von Michael R. (dj_motionx)


Lesenswert?

Hallo !

OK Stefan war zuerst. Hab auch gute erfahrungen mit LFSR gemacht.

Mfg Michael

von Hans (Gast)


Lesenswert?

@Stefan, @Michael

Hier noch einmal die Frage:

> Eine Zufallszahl kann ich ohne Probleme erzeugen, aber wie soll ich
> daraus ein zufälliges Bit erzeugen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan B. schrieb:
> Guck dir mal http://en.wikipedia.org/wiki/Linear_feedback_shift_register
Das Blöde ist, dass ein langes LFSR natürlich auch lange gleiche 
Bitfolgen erzeugen wird (z.B. bei 32 bit Länge bis zu 32 x eine 1 
hintereinander). Und ein kürzeres LFSR wiederholt sich laufend, von 
Zufall keine Spur...

Mike Mike schrieb:
> Ich würde aber eher sowas hier haben wollen:010010001000101010110110
Du könntest ein "kurzes" und ein "langes" LFSR miteinander verknüpfen...

Hans schrieb:
> Hier noch einmal die Frage:
Sieh dir nur das unterste Bit deiner Zufallszahl an...

von DirkB (Gast)


Lesenswert?

Lothar Miller schrieb:
> Sieh dir nur das unterste Bit deiner Zufallszahl an...

Oder jedes andere Bit (bis auf das höchste).

von Mike M. (mikeii)


Lesenswert?

Hi,

bin grade auf eine Idee gekommen:

Ich habe eine Zufallszahl gewonnen, Packe diese binär in ein Array. Und 
dann gewinne ich eine Zweite Zufallszahl, "verkleinere" sie auf unter 
die Größe des Arrays, und picke mir das Bit raus, auf welches die Zahl 
im Array zeigt.

Gruß Mike

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

soviel Aufwand ist völlig unnötig. Aus einer korrekt zufälligen Zahl 
kannst du jedes Bit verwenden, das muss so zufällig sein wie die Zahl 
selbst. Entweder nimmst du immer das gleiche, z.B. das LSB, oder die 
Bits nacheinander und wenn du durch bist erzeugst du eine neue 
Zufallszahl.

Ich nehme an, dass die von dir erzeugte Folge auf einem Fehler beruht. 
Lange Folgen konstanter 1en oder 0en kommen natürlich vor (sonst wäre 
die Zahl nicht zufällig), aber selten. In einer 16Bit-Folge muss 0FFFFH 
vorkommen, aber eben nur einmal unter 2^16 anderen Folgen.

Gruss Reinhard

von Stefanie B. (sbs)


Lesenswert?

Es reicht völlig aus immer nur eine bestimmte Stelle einer Zufallszahl 
auszuwerten (zB untererstes Bit), falls die Zufallszahl zufällig genug 
ist ;)
Das ist aber bei LFSR-erzeugten Zufallszahlen normalerweise gegeben.

von Stefanie B. (sbs)


Lesenswert?

@Reinhard:
Es kommt drauf an, was für eine Art von Zufall benötigt wird.
Normalerweise geht man implizit von weißem Rauschen aus, und da sollte 
auch irgendwann eine lange Folge von Einsen auftauchen.

von Mike M. (mikeii)


Lesenswert?

Hi,

ja ich hatte nur nicht richtig nachgedacht.
Mittlerweile arbeite ich auch jetzt mit dem ADC ;)

von blaumann (Gast)


Lesenswert?

1  <-- da hast du

von ganz einfach (Gast)


Lesenswert?


von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mike Mike schrieb:
> ja ich hatte nur nicht richtig nachgedacht.
Das stellt allgemein ein ernsthaftes Problem dar...

> Mittlerweile arbeite ich auch jetzt mit dem ADC
Mich würde jetzt echt interessieren, was ich nicht weiß:
Welche Aufgabe hattest du eigentlich?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.