• @Registrovani priznivci má oprávnění nahrávat
  • @Celostatni forum má oprávnění nahrávat
  • virtual_user má oprávnění vytvářet
  • @ALL má oprávnění číst
Umístění: Hlavní stránka » Lidé » Los Bot

Los Bot

složka:
Administrativní odbor
adresát:
Předsedající
stav:
aktuální

Ovládaní

Robot se ovládá přidáním příspěvku obsahujícím text

!losovani x [y]

přičemž x značí celkový počet možností a nepovinny parametr y specifikuje počet možnosti, které mají být vylosovány, pokud není uveden, losuje se jedna možnost.

Fungování a algoritmus výpočtu

  • V okamžiku požadavku na losování se zjistí aktuální délka Bitcoinového blockchainu n.
  • Blok s číslem (n+1) ihned následujícím po aktuálním bloku je vybrán jako rozhodující blok.
  • Výsledek losu se vyhodnocuje až je k dispozici 3. blok následující po zadání požadavku (n+4) a to z důvodu možneho řešení chain-split.
  • Hash h rozhodujícího bloku se vezme jako číslo zapsané v network-byte-order tj. big-endian
  • LOOP: pokud je počet možností zbývajících k vylosování y=0, ukončí algoritmus
    • Číslo h je celočíselně vyděleno číslem x, výsledek je uložen zpět do h a vylosovanou možnosti se stává možnost v pořadí odpovídající zbytku po tomto dělení zvýšeným o jedničku.
    • Čisla x a y jsou snížena o jedničku.
  • GOTO LOOP

Menší názorný příklad

!losovani 10 2

Block cislo 461386 ma hash 000000000000000000ea29678b1e99321f1f455d9146136d9e003de9cad294a0

Losuje se celkem 2 moznosti z 10.

h=22428238535249779529224820026317189368459016962739180704, x=10, y=2

Zbyvajici moznosti jsou 1 2 3 4 5 6 7 8 9 10.

1. vylosovanou moznosti je moznost cislo 5.

  • 22428238535249779529224820026317189368459016962739180704 / 10 = 2242823853524977952922482002631718936845901696273918070 zbytek 4

Jelikoz zbytek muze nabyvat hodnot 0-9, je vybrana 5. moznost nikoliv 4.

h=2242823853524977952922482002631718936845901696273918070, x=9, y=1

Zbyvajici moznosti jsou 1 2 3 4 6 7 8 9 10.

2. vylosovanou moznosti je moznost cislo 6.

  • 2242823853524977952922482002631718936845901696273918070 / 9 = 249202650391664216991386889181302104093989077363768674 zbytek 4

Zbytek je opet 4, vybirame 5. moznost ze zbyvajicich, coz je moznost cislo 6.

Zbyvajici moznosti jsou 1 2 3 4 7 8 9 10

y=0

Algoritmus konci.

Příklad

!losovani 43 42

Block cislo 461339 ma hash 0000000000000000013505c02ecd998a88b5480f9f8026d891f9cac5bf2a938a

Losuje se celkem 42 moznosti z 43.

1. vylosovanou moznosti je moznost cislo 16.

  • 29598471730581233210167037781318742165525202038061437834 / 43 = 688336551873982167678303204216714934081981442745614833 zbytek 15

2. vylosovanou moznosti je moznost cislo 8.

  • 688336551873982167678303204216714934081981442745614833 / 42 = 16388965520809099230435790576588450811475748636800353 zbytek 7

3. vylosovanou moznosti je moznost cislo 30. (nikoliv 28, jelikoz moznosti 16 a 8 jiz byly vybrany)

  • 16388965520809099230435790576588450811475748636800353 / 41 = 399730866361197542205750989672889044182335332604886 zbytek 27

4. vylosovanou moznosti je moznost cislo 7.

  • 399730866361197542205750989672889044182335332604886 / 40 = 9993271659029938555143774741822226104558383315122 zbytek 6

5. vylosovanou moznosti je moznost cislo 5.

  • 9993271659029938555143774741822226104558383315122 / 39 = 256237734846921501413942942098005797552779059362 zbytek 4

6. vylosovanou moznosti je moznost cislo 23.

  • 256237734846921501413942942098005797552779059362 / 38 = 6743098285445302668787972160473836777704712088 zbytek 18

7. vylosovanou moznosti je moznost cislo 34 .

  • 6743098285445302668787972160473836777704712088 / 37 = 182245899606629801859134382715509102100127353 zbytek 27

8. vylosovanou moznosti je moznost cislo 2 .

  • 182245899606629801859134382715509102100127353 / 36 = 5062386100184161162753732853208586169447982 zbytek 1

9. vylosovanou moznosti je moznost cislo 36 .

  • 5062386100184161162753732853208586169447982 / 35 = 144639602862404604650106652948816747698513 zbytek 27

10. vylosovanou moznosti je moznost cislo 41 .

  • 144639602862404604650106652948816747698513 / 34 = 4254105966541311901473725086729904344073 zbytek 31

11. vylosovanou moznosti je moznost cislo 35 .

  • 4254105966541311901473725086729904344073 / 33 = 128912302016403390953749245052421343759 zbytek 26

12. vylosovanou moznosti je moznost cislo 21 .

  • 128912302016403390953749245052421343759 / 32 = 4028509438012605967304663907888166992 zbytek 15

13. vylosovanou moznosti je moznost cislo 37 .

  • 4028509438012605967304663907888166992 / 31 = 129951917355245353784021416383489257 zbytek 25

14. vylosovanou moznosti je moznost cislo 25 .

  • 129951917355245353784021416383489257 / 30 = 4331730578508178459467380546116308 zbytek 17

15. vylosovanou moznosti je moznost cislo 33 .

  • 4331730578508178459467380546116308 / 29 = 149370019948557877912668294693665 zbytek 23

16. vylosovanou moznosti je moznost cislo 19 .

  • 149370019948557877912668294693665 / 28 = 5334643569591352782595296239059 zbytek 13

17. vylosovanou moznosti je moznost cislo 15 .

  • 5334643569591352782595296239059 / 27 = 197579391466346399355381342187 zbytek 10

18. vylosovanou moznosti je moznost cislo 28 .

  • 197579391466346399355381342187 / 26 = 7599207364090246129053128545 zbytek 17

19. vylosovanou moznosti je moznost cislo 38 .

  • 7599207364090246129053128545 / 25 = 303968294563609845162125141 zbytek 20

20. vylosovanou moznosti je moznost cislo 10 .

  • 303968294563609845162125141 / 24 = 12665345606817076881755214 zbytek 5

21. vylosovanou moznosti je moznost cislo 17 .

  • 12665345606817076881755214 / 23 = 550667200296394647032835 zbytek 9

22. vylosovanou moznosti je moznost cislo 29 .

  • 550667200296394647032835 / 22 = 25030327286199756683310 zbytek 15

23. vylosovanou moznosti je moznost cislo 31 .

  • 25030327286199756683310 / 21 = 1191920346961893175395 zbytek 15

24. vylosovanou moznosti je moznost cislo 32 .

  • 1191920346961893175395 / 20 = 59596017348094658769 zbytek 15

25. vylosovanou moznosti je moznost cislo 18 .

  • 59596017348094658769 / 19 = 3136632492004982040 zbytek 9

26. vylosovanou moznosti je moznost cislo 26 .

  • 3136632492004982040 / 18 = 174257360666943446 zbytek 12

27. vylosovanou moznosti je moznost cislo 1 .

  • 174257360666943446 / 17 = 10250432980408438 zbytek 0

28. vylosovanou moznosti je moznost cislo 13 .

  • 10250432980408438 / 16 = 640652061275527 zbytek 6

29. vylosovanou moznosti je moznost cislo 20 .

  • 640652061275527 / 15 = 42710137418368 zbytek 7

30. vylosovanou moznosti je moznost cislo 3 .

  • 42710137418368 / 14 = 3050724101312 zbytek 0

31. vylosovanou moznosti je moznost cislo 12 .

  • 3050724101312 / 13 = 234671084716 zbytek 4

32. vylosovanou moznosti je moznost cislo 14 .

  • 234671084716 / 12 = 19555923726 zbytek 4

33. vylosovanou moznosti je moznost cislo 42 .

  • 19555923726 / 11 = 1777811247 zbytek 9

34. vylosovanou moznosti je moznost cislo 39 .

  • 1777811247 / 10 = 177781124 zbytek 7

35. vylosovanou moznosti je moznost cislo 9 .

  • 177781124 / 9 = 19753458 zbytek 2

36. vylosovanou moznosti je moznost cislo 11 .

  • 19753458 / 8 = 2469182 zbytek 2

37. vylosovanou moznosti je moznost cislo 22 .

  • 2469182 / 7 = 352740 zbytek 2

38. vylosovanou moznosti je moznost cislo 4 .

  • 352740 / 6 = 58790 zbytek 0

39. vylosovanou moznosti je moznost cislo 6 .

  • 58790 / 5 = 11758 zbytek 0

40. vylosovanou moznosti je moznost cislo 40 .

  • 11758 / 4 = 2939 zbytek 2

41. vylosovanou moznosti je moznost cislo 43 .

  • 2939 / 3 = 979 zbytek 2

42. vylosovanou moznosti je moznost cislo 27 .

  • 979 / 2 = 489 zbytek 1

Omezeni

V tuto chvili neni vyreseno limitovani vytezovane entropie, ktera je cca 50 bitu. Pro bezne pouziti to ale staci.

https://forum.pirati.cz/podpalubi-f375/testovani-losbota-t35049.html

Zdrojove kody

Prozatim ne.

© Piráti, 2017. Všechna práva vyhlazena. Sdílejte a nechte ostatní sdílet za stejných podmínek. Podmínky použití.