Il sito di Yahoo Answers verrà chiuso il 4 maggio 2021 (ora della costa est degli USA) e dal 20 aprile 2021 (ora della costa est degli USA) sarà in modalità di sola lettura. Non verranno apportate modifiche ad altre proprietà o servizi di Yahoo o al tuo account Yahoo. Puoi trovare maggiori informazioni sulla chiusura di Yahoo Answers e su come scaricare i tuoi dati in questa pagina di aiuto.

Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 1 decennio fa

Numeri Pseudocasuali. Mi aiutate?

Ciao a tutti. Riuscite a postarmi il codice di un generatore di numeri casuali in linguaggio assembler?

Anche se avete solo qualche idea mi dareste un grosso aiuto.

L'unica cosa è che non deve essere esclusivamente basato sul timer, perchè ho bisogno di più numeri casuali di seguito, prima di un'interruzione.

Grazie!

2 risposte

Classificazione
  • 1 decennio fa
    Risposta preferita

    i generatori di numeri pseudocasuali sono "sempre" programmati in modo da generare la stessa sequenza. per motivi di debug e altri (riproducibilità);

    se uno vuole una sequenza diversa, cambia il "seme" (seed).

    implementare un buon algo pseudorandom non è facile. di algoritmi scritti in linguaggi di alto livello ne trovi a bizeffe; scegliene uno semplice e "traducilo" in assembly (quale?)

    cercando ho trovato

    http://www.faqs.org/faqs/assembly-language/x86/gen...

    da cui ti scarici lo zip indicato, che contiene un bel filetto .ASM che farà al caso tuo... come noterai, non è affatto banale. si possono pensare generatori molto più semplici, ma così facendo quello che si ottiene è una scarsa pseudocasualità :D

    un generatore molto banale che ho trovato è

    RNG=(69069*RNG + 69069) MOD 2^32

    ti basta implementare questa formula (inizializza RNG a qualcosa...)

    (banale, si tratta di istruzioni che tutti i processori hanno; ovviamente se il processore è a 32bit è molto più facile, altrimenti diventa complicato)

    ma come detto, è semplice, e dunque "scarso"

  • 1 decennio fa

    Puoi aumentare il seed leggendo anche dal buffer della tastiera?

Altre domande? Fai una domanda e ottieni le risposte che cerchi.