새로운 질서 위키

무작위

무작위는 미리 정한 순서를 따르지 않는 선택이나 배열을 가리킨다. 컴퓨터에서 무작위처럼 보이는 결과를 얻으려면 그 결과를 만드는 규칙을 마련해야 한다. 선택할 대상의 범위를 정하는 일도 필요하다. 배열의 항목 가운데 하나를 고르는 경우에는 배열에 무엇을 넣었는지가 결과의 범위를 결정한다. 따라서 작위를 지운 듯한 결과 뒤에도 누군가의 선택과 설계가 놓인다.

자바스크립트로는…

0 이상 1 미만의 실수에 42를 곱한다. 결과는 정수로 고정되지 않으며, 이 예에서는 0 이상 42 미만이다. 웹 브라우저의 개발자 도구 콘솔이나 Node.js에서 실행할 수 있다. (MDN: Math.random())

const number = Math.random() * 42;
console.log(number);

PHP로는…

이번에는 숫자를 새로 만드는 대신 세 단어의 순서를 섞는다. shuffle()에는 섞을 배열을 넘긴다. 반환값은 성공을 나타내는 true이고, 바뀐 순서는 원래 배열에서 읽는다. 아래 내용을 PHP 파일로 저장해 실행하면 단어들이 쉼표로 구분되어 출력된다. (PHP: shuffle())

<?php
$words = ['문', '창', '벽'];
shuffle($words);
echo implode(', ', $words), PHP_EOL;

섞은 뒤에도 단어 세 개는 그대로 남는다. 섞었는데 같은 순서가 나올 수도 있다. 무작위로 섞는 일이 매번 이전과 다른 결과를 보장하지는 않는다.

파이선으로는…

모듈에서 random 함수를 가져온 뒤 호출한다. 아래 코드는 0 이상 1 미만의 실수 하나를 출력한다. 자바스크립트 예제처럼 42를 곱하지 않았으므로 결과의 범위도 다르다. (파이선: random 모듈)

from random import random

print(random())

기타 등등

  • Math.random()은 0을 포함하지만 1은 포함하지 않는다. 출처
  • 화면의 문장을 임의로 고르는 일과 보안용 값을 만드는 일에는 다른 난수가 필요하다. MDN은 Math.random()을 암호학적으로 안전한 난수로 사용하지 말라고 구분한다. 출처

#개념 #프로그래밍

검색