[Algorithm] 언어별(C, C++, Python, Javascript, Java, Shell Script) 난수(랜덤 값) 생성하기

각 언어에서 난수를 생성하는 방법을 알아보자


환경

  • C, C++, Python, Javascript, Java, Shell Script


난수 생성 코드

C

  • rand 함수 이용
  • rand(): 0과 RAND_MAX 사이에 난수 정수 값을 반환
  • srandtime함수는 랜덤 생성할 시드 값을 위해 사용
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (){

    // use time for seed
    srand(time(NULL));

    // print one number in range 1 ~ 50
    printf("%d\n", rand() % 50 + 1);

    return 0;
}


C++

  • rand 함수 이용
  • rand(): 0과 RAND_MAX 사이에 난수 정수 값을 반환
  • srandtime함수는 랜덤 생성할 시드 값을 위해 사용
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main (){

    // use time for seed
    srand(time(NULL));

    // print one number in range 1 ~ 50
    cout << rand() % 50 + 1 << endl;

    return 0;
}


Python

  • random패키지 사용
  • random.random(): 0이상 1미만의 실수를 반환
  • random.randrange(a,b): a이상 b미만의 정수를 반환
import random

# value between 0 and 1, 1 is not included
# ex) 0.667165525151183
rand_value = random.random()

# random integer between a and b, b is not included
rand_value = random.randrange(1,50) # 1 ~ 49


Javascript

  • Math.random()를 사용
  • Math.random(): 0이상 1미만의 실수를 반환

// value between 0 and 1, 1 is not included
// ex) 0.8645079349832587
var = Math.random();


// 올림, 내림, 반올림 -> ceil, floor, round
Math.ceil (Math.random()) // 1
Math.floor (Math.random()) // 0
Math.round (Math.random()) // it depends


Java

  • java.util.Random 혹은 java.lang.Math를 이용
  • random.nextInt(n): 0 ~ n-1 사이의 난수 정수 값을 반환
  • Math.random(): 0이상 1미만의 실수를 반환
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        // Random example using java.util.Random
        Random random = new Random();
        // Number between 100 and 199
        System.out.println(random.nextInt(100) + 100);


        // Random example using java.
        // Number between 100 and 199
        System.out.println( (int)(Math.random() * 114124)%100 + 100 );
    }
}


Shell Script

  • $RANDOM를 이용
  • $RANDOM: 0 ~ 32767 사이의 정수 값을 반환

# Number between 0 and 32767
echo $RANDOM

# Number between 100 and 199
echo $(($RANDOM*12345%100 + 100))


참고자료