Função aleatória no awk como no bash

0

Como posso aleatório no awk. No bash é:

echo $((RANDOM%(32-12+1)+12))

Existe alguma função no awk, que dá o mesmo resultado?

    
por diego9403 01.09.2015 / 09:37

1 resposta

0

Sim, é chamado rand (), o manual declara:

rand()

Returns a random number N, between 0 and 1, such that 0 ≤ N < 1.

No entanto, tenha cuidado com a seguinte advertência :

CAUTION: In most awk implementations, including gawk, rand() starts generating numbers from the same starting number, or seed, each time you run awk. Thus, a program generates the same results each time you run it. The numbers are random within one awk run but predictable from run to run. This is convenient for debugging, but if you want a program to do different things each time it is used, you must change the seed to a value that is different in each run. To do this, use srand().

O manual mais uma vez declara:

srand([expr])

Uses expr as a new seed for the random number generator. If no expr is provided, the time of day is used. The return value is the previous seed for the random number generator.

Editar:

Para responder à sua pergunta, o segundo link acima fornece quase a solução para sua consulta. Você pode modificá-lo como:

  function randint(n,m)
  {
       return int(n+ (n-m) * rand())
  }
    
por 01.09.2015 / 09:45

Tags