Rand() in shell script

di il
2 risposte

Rand() in shell script

Spero sia la sezione giusta.

Per esercizio, ho scritto un programmino in C che restituisce un numero pseudo-casuale da usare in uno shell script, il quale fa la somma di tre numeri casuali.

Questo é il codice C:

// Genera un numero casuale compreso tra 0 e (argomento a linea di comando - 1)
// ad. es il comando "./random 6" restituisce un intero tra 0 e 5              
      
#include <stdlib.h>
#include <stdio.h>                                                                   
#include <time.h>

int main(int argc, char *argv[])
{
        //seed per funzione random
        srand((unsigned) time(NULL));

        //atoi ASCII to integers
        int limit = atoi(argv[1]);

        //genera intero pseudo-casuale
        int random = rand() % limit;

        printf("%d", random);

        return 0;

}
Questo é lo script shell:

#
var1=`./random 256`
var2=`./random 256`
var3=`./random 256`
#
echo $var1.$var2.$var3
echo
#
var4=$[ $var1+$var2+$var3 ]
echo $var4
#
exit 0
Il problema é che in ogni esecuzione dello script viene fuori sempre lo stesso numero casuale.

a@olidata:~/Documenti/C$ ./script.sh
83.83.83

249
a@olidata:~/Documenti/C$ ./script.sh
227.227.227

681
a@olidata:~/Documenti/C$ ./script.sh
145.145.145

435
Come mai? Dove é l'errore?

2 Risposte

  • Re: Rand() in shell script

    Il seed è sempre lo stesso. Aggiungi delle pause
  • Re: Rand() in shell script

    Weierstrass ha scritto:


    Il seed è sempre lo stesso. Aggiungi delle pause
    Avevo provato ad aggiungere un ciclo for che contava fino a 1.000.000 ma evidentemehte non é una pausa sufficiente.

    Grazie per la risposta.
Devi accedere o registrarti per scrivere nel forum
2 risposte