์ธ๋ฆฌ์ผ์์ ๊ธฐ๋ณธ ์ ๊ณตํ๋ ๋๋คํจ์ (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();
ย ย }
}
์๋ฌด๋ ์ข ์๋ ค์ค....
๊ทธ๋์ ๋์๋ ์๋์ฐ๋๋ฐ ํด๋ด๋ ๋๊ฐ์ด๋์จ๋ค๋๊ฑฐ์?
๋๊ฐ์ด ๋์ค์ง ์๋๋ฐ ๋ถํฌ๊ฐ ์น์ฐ์ณ์์, ๊ฐ๋ น 8๊ฐ์ ๋์ผ ํ๋ฅ ์์ดํ ์ด ์๋๋ฐ ๊ทธ์ค 3๊ฐ๋ง ๊ณ์ ๋์ค๋ ๋๋, ๊ตฌํ ๋ฌธ์ ๋ผ๊ธฐ์ ๋๋จธ์ง ์์ดํ ๋ ์์ ์๋์ค๋๊ฑด ์๋;
๋๊ฐ์ด ์๋์ค๋ฉด ๋๊ฑธํ ๋ฐ.. ์๋๊ฐ ๋ฐ๋๋๋ฐ ๋ถํฌ๊ฐ ์น์ฐ์ณ์ ธ์๋ค๋๊ฑด ๋ง์ด ์๋จ
์์ฉ์์ง์ธ๋ฐ ๋๋ค ํจ์๊ฐ ์๋ชป๋์์๋ผ๊ณ .. ์ ์์ฌ๋๋ฉด ๋ช๋ง๋ฒ ํจ์ ๋๋ ค์ ํต๊ณ๊ฐ ํ์ธํด๋ด
๋ ธ์ด์ฆ ์ด๋ฏธ์ง๊ฐ์ง๊ณ ๋ง๋๋ฌ
๊ทธ๊ฑด ์ฒจ๋ค์ด๋ณด๋ค, ๋์ถฉ ์ค๋ช ํด์ค์ ์์?
๋๋ ์ด๋์ ์ฃผ์๋ค์๊ฑฐ๋ผ ใ ใ ์ ํํ๋ ๋ชจ๋ฅด๊ณ ๊ฐ์ฐ์์ ํํฐ๋ผ๋๊ฐ ๊ทธ๋ฐ ํํฐ ์ด๋ฏธ์ง๋ค ๊ฐ์ง๊ณ ๋์ถฉ ์์ญ์ก์์ ์ ๋ชจ๋ฅด๊ฒ ๋ค ใ ใ
์์ดํ ์ด 8๊ฐ ๋ฟ์ด๋ฉด {0,1,2,โฆ,7} ๋ฆฌ์คํธ ๋ง๋ค์ด์ ๋ง ์์ ๋ค์์ ์ฐจ๋๋๋ก ๋ฝ์์ ์จ. ๊ทธ๋ผ ์์๋ง ๋๋ค์ด๊ณ ๋์ค๋ ํ์๋ ๋์ผํจ.
๋ฌด์จ์๋ฌ๊ฐ๋จ๋์ง ์ด๋ฏธ์ง๋ผ๋ ๊ฐ์ ธ์์ผ..