Frage:
Zufälliges Bit mit 100% Genauigkeit erraten
JV JV
2015-07-17 19:50:17 UTC
view on stackexchange narkive permalink

Ich werde bald meine Wehrpflicht beginnen. Ich habe mich bei der Cyber ​​Warfare Unit der finnischen Armee beworben. Es gab einen Test für Bewerber. Seit dem Test wurden die Fragen hier veröffentlicht: http://erityistehtavat.puolustusvoimat.fi/cyberchallenge.html

Hier ist Frage 4:

Zwei vollständig isolierte Programme erhalten jeweils ein Zufallsbit von verschiedenen Hardware-Zufallszahlengeneratoren. Nachdem das Bit erhalten wurde, errät jedes Programm, was das zufällige Bit des anderen Programms war. Programme können unterschiedlich sein und unterschiedliche Strategien zum Erraten verwenden. Wenn mindestens ein Programm richtig erraten wurde, erhält der Autor der Programme nach einmaliger Ausführung einen Preis.

Ist es möglich, eine Strategie zu entwickeln, die eine 100% ige Chance auf den Gewinn des Preises bietet? Wenn ja, erläutern Sie die Strategie.

Ich antwortete mit nein , weil ich die Gewinnstrategie nicht herausfinden konnte. War das die richtige Antwort oder habe ich etwas verpasst?

Vielleicht möchten Sie dies auf der Cryptography SE fragen.
Die Erfolgswahrscheinlichkeit beträgt 75%, wenn beide Programme zufällig antworten (da der Preis erhalten wird, wenn eine oder beide Vermutungen richtig sind).
Auf keinen Fall, keine Chance
Ich bezweifle, dass dies eine grundlegende Wahrscheinlichkeitsfrage ist, die auf den Zielen des Tests basiert.
In Anbetracht der Antwort, die ich gegeben habe, kann das Rätsel so umformuliert werden, dass es völlig unabhängig von der Informatik ist. Aus diesem Grund denke ich, dass https://puzzling.stackexchange.com/ wahrscheinlich die schnellste SE-Site gewesen wäre, um die richtige Antwort zu geben.
Dieser Fragebogen ist ziemlich cool und gibt es vielleicht irgendwo ein Antwortblatt?
Dies ist eigentlich eine mathematische Frage. Es ist hier nicht zum Thema, nicht zum Thema bei [so]. Es könnte auf [math.se] gestellt werden (überraschenderweise kann ich es nicht finden; [diese Frage] (http://math.stackexchange.com/q/79333) zeigt die Lösung für den N-Programm-Fall und fragt eine Folgefrage) oder, da keine fortgeschrittene Mathematik erforderlich ist, auf [puzzling.se] (wobei [diese Frage] (http://puzzling.stackexchange.com/q/70) nach einer Nicht-Mathematik fragt -schwere Erklärung des N-Programm-Falls).
Der Titel der Frage zeigt das Missverständnis des Tests. Bei dem Testproblem geht es nicht darum, ein zufälliges Bit mit 100% iger Genauigkeit zu erraten: Es handelt sich um ein mathematisch-logisches Rätsel. Die Computer- und Programmieraspekte des Problems könnten entfernt werden, ohne den Kern des Problems zu ändern.
Fünf antworten:
helm
2015-07-17 20:39:04 UTC
view on stackexchange narkive permalink

Es gibt tatsächlich eine Lösung, die immer erfolgreich sein wird: Programm A errät das Gegenteil des empfangenen Wertes, Programm B errät den gleichen Wert wie den empfangenen.

Sie können sich das auch als solches vorstellen: Vermutungen, dass sie unterschiedliche Nummern erhalten werden; B vermutet, dass sie das gleiche erhalten. Einer von ihnen muss richtig sein. Wenn Sie sich die folgende Tabelle ansehen (r für Empfang, g für Vermutung), werden Sie sehen, dass entweder A oder B immer richtig ist (* bedeutet korrekte Antwort):

  rA | rB | gA | gB0 0 1 0 * 0 1 1 * 11 0 0 * 01 1 0 1 *  
Und das ist zu 100% die richtige Antwort :)
@pineappleman und diese Fragen und Antworten sind ein Lehrbuchbeispiel dafür, warum das grüne Kontrollkästchen akzeptierter Antworten auf SE-Websites immer weniger bedeutet.
@Mindwin OP war ziemlich schnell bei der Auswahl der akzeptierten Antwort und hatte dies getan, bevor ich meine gepostet habe.
Noch nie hat sich eine Antwort so falsch angefühlt, aber so richtig.
Dies ist eine sehr einfache Form der 100 Gefangenen und ein Lichtschalterproblem oder auch das Rätsel "Eine Person lügt immer, man sagt die Wahrheit".
Follow-up: Was ist, wenn N Programme vorhanden sind und das RNG Werte zwischen 1 und N zurückgibt? ([Lösung] (http://puzzling.stackexchange.com/questions/70/n-logicians-wearing-hats-of-n-colors))
Wie unterscheidet sich dies von Programm A, das immer 1 errät, und Programm B, das immer 0 errät?
@Dancrumb: Siehe Lynxys Antwort. Dies schlägt fehl, wenn A 1 und B 0 empfängt.
Ich dachte, die Frage erforderte, dass A und B nicht kommunizieren konnten? "Zwei vollständig isolierte Programme" Wenn Sie die Möglichkeit haben, Werte zwischen den Programmen zu senden, unterscheidet sich dies nicht von der Betrachtung von Systemartefakten, -ausgaben usw. Ist dies dann keine Trickfrage?
@EricG: Sie haben richtig gedacht. Für diese Antwort haben Sie nicht die Möglichkeit, Werte zwischen den Programmen zu senden. .
@RickyDemer Ich sehe jetzt, er meint nicht, in seiner Erklärung zu empfangen, wie beim Senden zwischen, er meint nur Vorhersagen usw.
Tom Leek
2015-07-17 20:37:27 UTC
view on stackexchange narkive permalink

Da dies wie eine Trickfrage aussieht, finden Sie hier eine Trickantwort (dh es handelt sich um "Betrug").

Lassen Sie Programm A Folgendes tun:

  • If es empfängt eine 0, gibt dann "1" aus und beendet.
  • Andernfalls wird eine Schleife für immer ausgeführt, bis ein "Strg-C" -Signal empfangen wird. In diesem Fall gibt das Programm "0" aus und wird beendet.

Lassen Sie Programm B Folgendes tun:

  • Wenn es eine 0 empfängt, geben Sie "0" aus und beenden Sie.
  • Andernfalls Schleife für immer, bis ein "Strg-C" -Signal empfangen wird. In diesem Fall gibt das Programm "1" aus und wird beendet.

Analyse:

  • Wenn beides Programme erhalten eine 0, Programm B gibt "0" aus, was korrekt ist -> win.
  • Wenn Programm A eine 0 und Programm B eine 1 erhält, gibt Programm A "1" aus, was korrekt ist -> win.
  • Wenn Programm A eine 1 und Programm B eine 0 erhält, wird Programm A für immer wiederholt, während Programm B "0" ausgibt (was falsch ist). Irgendwann verliert der Bediener, der das Experiment ausführt, die Geduld, gibt Strg-C in das Terminal ein, in dem Programm A ausgeführt wird, und sieht "0", was eine korrekte Antwort ist -> win.
  • Wenn beide Programme a erhalten 1, dann werden beide Programme für immer wiederholt. Der Bediener versucht, beide mit Strg-C zu beenden. An diesem Punkt gibt Programm A 0 und Programm B 1 aus. Letzteres ist richtig -> gewinnen.

Und voilà! eine 100% ige Gewinnstrategie.

Bearbeiten: und wenn Sie die ganze Sache "Warten bis Strg-C" vergessen, erhalten Sie im Wesentlichen die Antwort von @ Helm, die korrekt und viel weniger schwierig ist. Der einzige Punkt dieses Wartevorgangs besteht darin, einen Seitenkanal zu erhalten, über den ein Programm nicht nur den Wert erraten kann, sondern auch "weiß", dass es den Wert erraten hat (was ohnehin nicht Teil der Herausforderung ist).

"Irgendwann verliert der Bediener, der das Experiment durchführt, die Geduld" +1 für die Verwendung des Bedieners :)
Ja, ich war so zufrieden mit mir selbst darüber nachzudenken (ich meine, noch erfreuter, dass ich es normalerweise bin), dass ich nicht bemerkte, dass ich ohne diesen Seitenkanal tatsächlich die richtige Antwort hatte.
Travis Gunderson
2015-07-17 20:06:24 UTC
view on stackexchange narkive permalink

Sie haben Recht. Das nächste, was Sie erreichen könnten, wäre eine 75% ige Chance, dass mindestens einer von ihnen korrekt ist, wobei beide Computer immer die Negation des anderen erraten.

Können Sie erklären, wie Sie zu 75% gekommen sind?
Eric G
2015-07-17 20:13:47 UTC
view on stackexchange narkive permalink

Da es sich um Information Warfare handelt, frage ich mich, ob Szenarien mit "Betrug" zulässig sind. Möglicherweise gibt es ein Artefakt auf Systemebene, das die Programme überprüfen können, nachdem die Zufallszahl generiert wurde, oder eines der Programme könnte sich in diesen Prozess einbinden und ihn überwachen.

Die Anforderungen besagen, dass die Programme voneinander isoliert sind, sich jedoch nicht unbedingt auf separaten Systemen befinden. Möglicherweise können Sie den von der anderen Anwendung verwendeten Startwert auch erkennen oder beeinflussen, wenn sich beide auf demselben System befinden. Wenn Sie beide Anwendungen schreiben, kann jede Anwendung sogar den Wert ausdrucken und das andere System diesen Wert einlesen lassen. Selbst wenn sich diese in separaten Feldern befinden, können Sie theoretisch eine Lösung vorschlagen, die eine Art Wärme- oder akustische Überwachung verwendet .

Ich denke, das Wort "Raten" ist ein Wurf. Sie können keine Gewissheit haben, wenn Sie nur raten. Diese Frage klingt eher nach einer Art, über verschiedene Arten der Aufhebung der Beeinflussung des Systems nachzudenken und auch zu verstehen, wie zufällige Werte beeinflusst oder vorhergesagt werden können.

Dies ist das erste Mal, dass ich eine Antwort mit einer negativen Punktzahl sehe, die als die richtige Antwort markiert ist.
@Derek 朕 會 功夫, vielleicht merkt das OP nicht, dass Sie ändern können, welche Antwort akzeptiert wird.
Pieter
2015-07-18 02:51:59 UTC
view on stackexchange narkive permalink

NEIN Es ist nicht möglich, ein zufällig generiertes Bit zu erraten. Mit 100% iger Genauigkeit haben Sie im Durchschnitt die Hälfte der Zeit Recht.

Bearbeiten: Ich stimme zu, dass ich falsch liege. Ich habe die Frage so gelesen, dass ich nur eines der Programme besitze. Wenn Sie beide besitzen, ist jeder die Hälfte der Zeit korrekt, also im Durchschnitt immer.

Die richtige Antwort wurde bereits gegeben und erklärt, wie man 100% der Zeit richtig liegt.
Wenn Sie Ihre 50% auch nach einer eindeutigen Antwort noch behaupten möchten, müssen Sie erklären, wie Sie zu Ihrem Ergebnis gekommen sind.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...