1에서 6 사이의 임의의 정수를 생성하는 명령줄 스크립트가 필요합니다. 저는 bash와 함께 Ubuntu를 사용하고 있습니다.
나는 몇 달 전에 'bc'를 사용하여 이 작업을 하고 있었지만 완전히 작동하지는 못했습니다. 그 이후로 나는 내가 어디로 갔는지 잊어버렸다.
나는 이것을 사용하여 crontab 스크립트를 변경하여 항상 15분마다 실행되지 않고 임의의 시간(15+-3분)에 실행되도록 합니다. 즉. crontab을 12분마다로 변경한 다음 스크립트를 실행하기 전에 스크립트에서 1~6분 동안 절전 모드로 전환합니다(기본적으로 웹페이지 상태를 확인하는 wget입니다).
답변1
맨배쉬를 보세요,매개변수부분,쉘 변수일부:
RANDOM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RANDOM. If RANDOM is unset, it loses its special properties, even if it is subsequently reset.
값을 1..6 간격으로 제한하려면 표현식을 사용하십시오 $((RANDOM%6+1))
. 1
/dev/urandom
또는 다음과 같이 사용할 수 있습니다 .
tr -dc '1-6' < /dev/urandom | head -c 1
답변2
맞춤형 선형 합동 난수 생성기 또는 X(n+1) = (343*X(n) ) % M17을 제안할 수 있습니다. 여기서 M17= 2^17 - 1 = 131071은 메르센 소수(p=17)입니다. 의사 난수 시퀀스는 [0,131070] 범위로 균일하게 분포되어 있으며 다음과 같이 범위를 [1,6[)으로 제한할 수 있습니다: Z6 = 6*X(n)/M17 + 1
샘플 코드:
#!/bin/bash
M=6 #change this if you need different ranges
let "z=(343*10#`date +%N`)%131071"
let "z=$M*z/131071+1"
echo $z
이것은 일회성 무작위 생성기입니다. 무작위 시퀀스가 필요한 경우 시드는 10#date +%N
시작하는 데 한 번만 사용되며 생성기는 루프에서 사용됩니다. Ubuntu 12.04 LTS에서 테스트되었습니다. 재미있게 보내세요!