์–ธ๋ฆฌ์–ผ์—์„œ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” ๋žœ๋คํ•จ์ˆ˜ (Random Integer / Random Integer Stream)๊ฐ€ ๋‚˜์˜จ๊ฑฐ ๋˜ ๋‚˜์˜ค๊ณ  ๋‚˜์˜จ๊ฑฐ ๋˜ ๋‚˜์˜ค๊ณ  ์ด์ง€๋ž„์ด๋ผ ๋ง˜์— ์•ˆ๋“ค์–ด์„œ ๋” ์ข‹์€๊ฑฐ๋กœ ํ•˜๋‚˜ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋‚ด๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ์ฒจ์—๋Š” ๊ทธ๋ƒฅ ์ฝ”๋“œ ์ฃผ์›Œ๋‹ค๊ฐ€ ์ ์ ˆํžˆ ๊ณ ์ณ์“ฐ๋ฉด ๋  ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์–ธ๋ฆฌ์–ผ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค๋ ค๋ฉด UFUNCTION์„ ์จ์•ผ๋œ๋‹ค๋”๋ผ๊ณ 


๊ทผ๋ฐ ์‹œ๋ฐœ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Œ; ์˜ค๋Š˜๋กœ 4์ผ์งธ์ธ๊ฐ€ ํ•˜๋ฃจ 7์‹œ๊ฐ„ ์ธํ„ฐ๋„ท ์กด๋‚˜ ๋’ค์ง€๊ณ  ๋‹ค๋‹ˆ๊ณ  boost๋„ ๊น”์•„๋ณด๊ณ  ํ–ˆ๋Š”๋ฐ ์—๋Ÿฌ๋งŒ ์ž”๋œฉ ๋œจ๊ณ  ์•ˆ๋ผ

์˜ˆ์ œ๊ฐ™์€๊ฑฐ ๋ณด๋ฉด ์‰ฝ๊ฒŒ์‰ฝ๊ฒŒ UCLASS ์“ฐ๊ณ  GENERATOR_BODY ์“ฐ๊ณ  ๊ทธ๋‹ด์— UFUNCTION์“ฐ๊ณ  ๋ฐ›๋Š” ๊ฐ’ ์“ฐ๊ณ  ์ถœ๋ ฅ ๊ฐ’ ์“ฐ๋ฉด ์ง  ํ•˜๊ณ  ์™„์„ฑ์ธ๋ฐ ๋‚œ ์™œ ๋ชปํ•˜์ง€


์•„๋ž˜๋Š” ์˜ค๋Š˜ ์•„์นจ๋ถ€ํ„ฐ ์“ด ์—๋Ÿฌ์ฐŒ๋„๋ ˆ๊ธฐ์ž„ย 



#include <random>

#include <ctime>

#include <iostream>

#include <functional>

#include "CoreMinimal.h"

#include "Kismet/BlueprintFunctionLibrary.h"


using namespace std;


UCLASS()

class CH_API UMersenneTwisterBP : public UBlueprintFunctionLibrary

{

ย  ย  GENERATED_BODY()

public:

ย  ย  UFUNCTION(blueprintcallable, category = "Mersenne Twister")

ย  ย  ย  ย  static int32 MersenneTwister(UPARAM(displayname = "max")int32 max, UPARAM(displayname = "min")int32 min);

ย  ย  static int main()

ย  ย  {

ย  ย  ย  ย ย 

ย  ย  ย  ย  mt19937 engine((unsigned int)time(NULL));ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  // MT19937 ๋‚œ์ˆ˜ ์—”์ง„

ย  ย  ย  ย  uniform_int_distribution<int32> distribution(int32 min, int32 max);ย  ย  ย  ย // ์ƒ์„ฑ ๋ฒ”์œ„

ย  ย  ย  ย  auto generator = bind(distribution, engine);

ย  ย  ย  ย  return generator();

ย  ย  }

}

์•„๋ฌด๋‚˜ ์ข€ ์•Œ๋ ค์ค˜....