Post
Topic
Board Deutsch (German)
Merits 2 from 2 users
Re: Großes Bitcointalk-Gewinnspiel "10 Jahre Bitcointalk 10 x 1 mBTC"
by
trantute2
on 12/11/2019, 06:30:11 UTC
⭐ Merited by 1miau (1) ,Lakai01 (1)
Kleine Knobelaufgabe:
Wie groß ist die Wahrscheinlichkeit für das Auftreten von 00 bzw. für das Auftreten der anderen Kombinationen
(mit und ohne obige Regelung).

Nimmt man "00" raus, dann ist die Wahrscheinlichkeit ziemlich genau 1/99 für jedes Ziffernpaar da für kryptographische Hashfunktionen vorausgesetzt wird, dass deren Resultat zufällig aussieht. Sowas wird vor deren Einführung von Kryptographen getestet.

Im anderen Fall beträgt die Wahrscheinlichkeit für "00" etwa 0.0102 und für die anderen Ziffernpaare 0.01 - 0.0002/99. Alles unter der Annahme, dass ich mich nicht verprogrammiert habe und, daß der 0er-Präfix die Länge 19 hat und man beim Hashresultat die erste 19 Stellen damit ersetzen darf damit man kein Bitcoin-Hashen durchführen muss (ein bisschen gecheatet). Empirische Verteilung:

Code:
library(digest);
library(stringi);
library(benford.analysis);

n <- 10^6;

rnd_strs <- stri_rand_strings(n, sample(1:1000, n, replace=TRUE));
ret <- lapply(rnd_strs, FUN = function(x){digest(x, algo="sha256")});
ret <- lapply(ret, FUN = function(x){gsub("^[0-9a-z]{19}", "0000000000000000000", x)});
ret <- lapply(ret, FUN = function(x){paste(unlist(strsplit(x, "[a-z]+")), collapse="")});
ret <- lapply(ret, FUN = function(x){
  foo <- rev(unlist(strsplit(x, "")));
  a <- foo[((1:ceiling(length(foo)/2)) - 1)*2];
  b <- foo[((1:ceiling(length(foo)/2)) - 1)*2 + 1];
  #a <- a[1:min(length(a), length(b))];
  #b <- b[1:min(length(a), length(b))];
  a <- a[1:10];
  b <- b[1:10]
  paste(a, b, sep="");
});

ret <- unlist(ret);
ret <- as.numeric(ret);
length(ret[ret==0])/length(ret);

2% von 1% ist nicht viel aber mehr als 0%.