vytvorenie kódu na náhodnosť

Sekcia: Programovanie 19.04.2013 | 16:05
Avatar Stanislav Hoferek Greenie 18.04  Používateľ
Ahojte, mám takú veľmi jednoduchú otázku. Ako by sa dala vytvoriť (v akomkoľvek jazyku alebo neviem v čom) aplikácia, ktorá by na základe pravdepodobností vygenerovala nejaký výsledok?

priamo k veci: rád by som vytvoril niečo, čo by sa dalo použiť v hre. Hrdina získa postupom na vyšší level nejaké zlepšenie a rád by som vedel, ako ho to môže zmeniť keď sa dostane napríklad na level 30 s tým, že sa stanovia konkrétne šance pre každú zmenu. Tak napríklad, v úplnom základe má hrdina silu 0, obratnosť 0 a rýchlosť 0. Každým levelom môže dostať niečo z tohto:

+ 1 na silu (40 percent šanca)
+ 1 na obratnosť (40 percent šanca)
+ 1 na energiu (20 percent šanca)

takže... ako na to? a ideálne to urobiť tak, aby sa mohli uvedené percentá čo najjednoduchšie modifikovať a nech sa dá nastaviť počet úrovní.
    • Re: vytvorenie kódu na náhodnosť 19.04.2013 | 17:19
      Avatar bedňa LegacyIce-antiX  Administrátor
      cat /dev/urandom

      cat /dev/urandom > /dev/dsp
      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • Re: vytvorenie kódu na náhodnosť 19.04.2013 | 18:06
        Avatar Stanislav Hoferek Greenie 18.04  Používateľ
        super šetrič obrazovky :) random spácham aj cez nejakú online službu, no zaujímalo by ma práve ako to popreplietať s percentami, aby bol po pridaní 20 čísiel nejaký nasledovný výstup:

        A:13 B:5 C:2
        • Re: vytvorenie kódu na náhodnosť 19.04.2013 | 18:19
          llort   Návštevník
          for i in prve druhe tretie stvrte piate sieste siedme osme deviate desiate jedenaste dvanaste trinaste strnaste patnaste sestnaste sedemnaste osemnaste devatenaste dvadsiate; do
          echo "Zadaj ${i} cislo"
          read
          done
          echo 'A:13 B:5 C:2'
        • Re: vytvorenie kódu na náhodnosť 19.04.2013 | 18:48
          meno   Návštevník
          A=0
          B=0
          C=0
          for cislo in `seq 1 20`; do
          NAHODNE="$RANDOM"
          PERCENTA="`echo "$NAHODNE * 100 / 32768" | bc`"
          if [ 40 -gt $PERCENTA ]; then A="`expr "$A" + 1`" ; fi
          if [ 80 -gt $PERCENTA ] && [ 40 -le $PERCENTA ]; then B="`expr "$B" + 1`" ; fi
          if [ 80 -le $PERCENTA ]; then C="`expr "$C" + 1`" ; fi
          done
          echo "A: ${A} B:${B} C:${C}"
          • Re: vytvorenie kódu na náhodnosť 19.04.2013 | 22:28
            Avatar Stanislav Hoferek Greenie 18.04  Používateľ
            stano@stano-stolny:~/Plocha$ sh nahodnost.sh
            (standard_in) 1: syntax error
            nahodnost.sh: 7: [: -gt: argument expected
            nahodnost.sh: 8: [: -gt: argument expected
            nahodnost.sh: 9: [: -le: argument expected
            A: 0 B:0 C:0
        • Re: vytvorenie kódu na náhodnosť 20.04.2013 | 10:43
          Avatar bedňa LegacyIce-antiX  Administrátor
          Podľa Emanuela k urandom najú dnešné jadrá entropiu bazéna 4096 hodnôt :) Tak keď chceš len čísla napr. od 0 po 49 stačí to videliť 100 a prirátať kód znaku v UTF8, kde začínajú čísla.

          No bude to chcieť ešte vycucnúť z výpočtu len celé čísla, echo "$hodnota/1" | bc
          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
          • Re: vytvorenie kódu na náhodnosť 20.04.2013 | 10:44
            Avatar bedňa LegacyIce-antiX  Administrátor
            Omyl, 0 až 39.
            Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • Re: vytvorenie kódu na náhodnosť 19.04.2013 | 22:33
      Avatar Stanislav Hoferek Greenie 18.04  Používateľ
      neviem programovať v ničom a celkovo o tom neviem veľa, ale skúsim to nejako napísať...

      UVODNA-HODNOTA-A: 0
      UVODNA-HODNOTA-B: 0
      UVODNA-HODNOTA-C: 0
      random 1-100
      if 1-40 then UVODNA-HODNOTA-A +1
      if 41-80 then UVODNA-HODNOTA-B +1
      if 81-100 then UVODNA-HODNOTA-C +1
      opakovanie: 10
      VYSLEDNA-HODNOTA-A: UVODNA-HODNOTA-A + pridane hodnoty
      VYSLEDNA-HODNOTA-B: UVODNA-HODNOTA-B + pridane hodnoty
      VYSLEDNA-HODNOTA-C: UVODNA-HODNOTA-C + pridane hodnoty
      echo VYSLEDNA-HODNOTA-A
      echo VYSLEDNA-HODNOTA-B
      echo VYSLEDNA-HODNOTA-C