답변:
농담하니?
$ jot
jot: jot - print sequential or random data
usage: jot [ options ] [ reps [ begin [ end [ s ] ] ] ]
Options:
-r random data
-c character data
-n no final newline
-b word repeated word
-w word context word
-s string data separator
-p precision number of characters
우분투를 사용하면 패키지는 athena-jot입니다. 간단한 예 :
$ jot -r 10 12 27
26
13
22
18
25
12
13
23
15
23
안녕.
필요한 것을 수행하기 위해 작은 스크립트를 작성하는 것이 마음에 들지 않으면 오픈 소스 통계 시스템 인 R 에서 수행하는 것이 좋습니다 .
예를 들어,이 단일 라이너를 사용하여 100 개의 가우스 분포 숫자 목록을 가져옵니다.
$ Rscript -e 'write(rnorm(100) * 100 + 100, "", 1)'
234.2903
-25.53289
168.0262
-28.49810
105.0687
85.97355
269.5072
...
이것을 분해하자.
표준 R
명령은 대화 형 프로그래밍 환경으로 안내합니다. 직접 손으로 무언가를 수행하거나 점진적으로 무언가를 구축하려고 시도하는 경우 괜찮습니다. 그러나 질문에서 숫자 목록이 필요하다고 들립니다. 다른 프로그램으로 보냅니다. 대신 우리 Rscript
는 전통적인 유닉스 스크립트 인터프리터처럼 동작하는을 사용합니다. R 스크립트가 포함 된 파일 이름을 전달하거나 표준 -e
플래그를 사용 하여 명령 행에서 전체 프로그램 텍스트를 전달할 수 있습니다.
rnorm()
"정규"또는 가우스 분포를 갖는 난수 목록을 가져 오는 R 함수입니다. 최대 3 개의 매개 변수를 사용하며, 첫 번째 매개 변수 만 필요한 수입니다. 우리는 100을 요구했습니다. 다른 두 개의 선택적 매개 변수의 기본값을 취하면 평균은 0이고 표준 편차는 1입니다.
그 후의 산술은 R 언어의 멋진 기능을 보여줍니다.보다 일반적인 언어의 스칼라 값처럼 쉽게 전체 데이터 테이블, 행렬 등에서 산술을 수행 할 수 있습니다. 가능한 모든 생성 된 값에 100을 곱하고 100을 더했습니다. R은 본격적인 프로그래밍 언어이므로이 숫자 목록으로 수행 할 수있는 작업에는 제한이 없습니다. 그것은 같은 고정 목적 명령 대신 이러한 시스템을 사용하는 이점입니다 jot
.
이전 작업의 결과를 write()
함수에 전달하면 기본적으로 파일에 데이터를 기록하지만 두 번째 매개 변수, 파일 이름에 빈 문자열을 전달하여 테이블을 씁니다. 대신 터미널. 다음 매개 변수 1
는 출력을 단일 열 형식으로 원한다고 알려줍니다.
R에는 기본 시스템에 내장 된 다른 많은 난수 생성 기능이 있습니다. 예를 들어, jot
이 스크립트를 사용하여 lcpriani의 답변에서 명령을 흉내낼 수 있습니다 .
$ Rscript -e 'write(round(runif(10, 12, 27)), "", 1)'
여기서 우리는 runif()
12에서 27까지 균일하게 분포 된 난수 10 개를 얻기 위해 rnorm()
사용하고 있습니다. 위에서 사용한 것처럼이 함수는 부동 소수점 값을 반환하므로 round()
화면에 쓰기 전에 가장 가까운 정수 값을 가져와야합니다.
R은 또한 Perl의 CPAN을 모델로 한 패키지 저장소 인 CRAN에 풍부한 추가 기능을 제공 합니다. 관심있는 것 중 하나는 random 이라고 부르는데 , 이것은 random.org에 대한 인터페이스 역할을합니다. random.org 는 대기 노이즈에서 생성 된 진정한 난수를 반환하는 서비스입니다.
R은 완전한 프로그래밍 환경이므로 텍스트 형식의 R에서 실제로 숫자를 가져올 필요가 없을 수도 있습니다. R에서 문제를 완전히 해결할 수 있습니다.
jot
위의 답변에 lcpriani의 명령을 흉내내는 방법에 대한 정보를 추가했습니다 . 에 대한 값 제한에 rnorm()
대해서는 정규 분포가 작동하는 방식이 아닙니다. 기본 평균값 0과 SD를 1로 설정하면 1000이 여전히 가능한 반환 값이므로, 그럴 가능성은 거의 없습니다. R은 주어진 범위 밖에서 물건을 제거하기 위해 값을 고정시키는 것을 쓸 수있게하지만 아마도 정규 분포를 잘못 사용했을 것입니다.