疑似乱数2

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2007/10/17(水) 22:34:59
擬似乱数発生器について語ろうか。その2

前スレ
擬似乱数
http://pc11.2ch.net/test/read.cgi/tech/1146071975/

関連スレ
【危険】とんでもプログラム告発スレッド【悪質】
http://pc11.2ch.net/test/read.cgi/tech/1191860116/


SIMD-oriented Fast Mersenne Twister (SFMT):
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
2008/08/13(水) 17:47:46
' Xorshift を VBA で書く場合、Double を使うと比較的シンプルになる
' VBA の演算子 Xor と関数 Fix は 31 bit までしか扱えないので
' 53 bit まで扱える関数 uFix、uXor を用意した。
Option Explicit
Public x, y, z, w As Double

Function uFix(ByVal x As Double) As Double
Const Base = 2# ^ 22
Dim y As Long
y = Int(x / Base): uFix = y * Base + Int(x - y * Base)
End Function

Function uXor(ByVal i As Double, ByVal j As Double) As Double
Const Base = 2# ^ 22
Dim u, v As Long
u = Int(i / Base): v = Int(j / Base): i = i - u * Base: j = j - v * Base
uXor = (u Xor v) * Base + (Int(i) Xor Int(j))
End Function

Function xor128() As Double
Dim t As Double
t = x * 2# ^ 11: t = t - Int(t / 2# ^ 32) * 2# ^ 32
t = uXor(x, t): x = y: y = z: z = w: t = uXor(t, uFix(t / 2# ^ 8))
w = uXor(uXor(w, uFix(w / 2# ^ 19)), t): xor128 = w
End Function

Sub Test()
Dim i As Long
x = 123456789#: y = 362436069#: z = 521288629#: w = 88675123#
For i = 1 To 2000: Cells(i, 1) = xor128: Next
End Sub
116115
垢版 |
2008/08/13(水) 18:47:55
' 書き込んだ後、uFix は必要がないことに気づきました。
' こっちの方が高速です。
Option Explicit
Public x, y, z, w As Double

Function uXor(ByVal i As Double, ByVal j As Double) As Double
Const Base = 2# ^ 30
Dim u, v As Long
u = Int(i / Base): v = Int(j / Base): i = i - u * Base: j = j - v * Base
uXor = (u Xor v) * Base + (Int(i) Xor Int(j))
End Function

Function xor128() As Double
Dim t As Double
t = x * 2# ^ 11: t = t - Int(t / 2# ^ 32) * 2# ^ 32
t = uXor(x, t): x = y: y = z: z = w: t = uXor(t, Int(t / 2# ^ 8))
w = uXor(uXor(w, Int(w / 2# ^ 19)), t): xor128 = w
End Function

Sub Test()
Dim i As Long
x = 123456789#: y = 362436069#: z = 521288629#: w = 88675123#
For i = 1 To 2000: Cells(i, 1) = xor128: Next
End Sub
2008/08/18(月) 18:18:26
>>116
114です、ありがとうございます。32bitのXorShiftですね。

で、周期の途中から乱数を取り出して使いたいのですが、
x,y,z,wの初期値を乱数で設定するのに、デフォルトのrnd()を使ったら無意味ですよね。
2008/08/19(火) 00:23:17
>>75あたりか
119115
垢版 |
2008/08/22(金) 21:40:15
'種を使って初期化できます。116よりさらに2倍程度高速になりました
Private Const p32 = 2# ^ 32, p31 = 2# ^ 31, p21 = 2# ^ 21, p11 = 2# ^ 11
Private Const m53 = 2# ^ -53, m32 = 2# ^ -32, m30 = 2# ^ -30, m19 = 2# ^ -19, m11 = 2# ^ -11, m8 = 2# ^ -8
Private x, y, z, w As Double
Private f As Boolean
Private Function uXor(ByVal x As Double, ByVal y As Double) As Double
Dim u, v As Long
If x >= p31 Then u = x - p32 Else u = x
If y >= p31 Then v = y - p32 Else v = y
u = u Xor v
If u < 0 Then uXor = u + p32 Else uXor = u
End Function
Private Function XSub(ByVal x As Double, ByVal i As Long) As Double
Dim s As Variant
s = CDec(1812433253) * CDec(uXor(x, Int(x * m30))) + CDec(i): s = s - CDec(Int(s * m32)) * CDec(p32): XSub = s
End Function
Public Sub InitXor(ByVal s As Long) ' s を種にして乱数を初期化する
f = True: x = XSub(s, 1): y = XSub(x, 2): z = XSub(y, 3): w = XSub(z, 4)
End Sub
Private Function NextXor() As Double
Dim t As Double
If f = 0 Then InitXor (1)
t = x * p11: t = t - Int(t * m32) * p32: t = uXor(x, t): x = y: y = z: z = w: t = uXor(t, Int(t * m8)): w = uXor(uXor(w, Int(w * m19)), t): NextXor = w
End Function
Public Function NextUnif() As Double ' 0 以上 1 未満の乱数を返す
Dim x, y As Double
x = NextXor * m11: y = NextXor: NextUnif = (y * p21 + Int(x)) * m53
End Function
2008/08/22(金) 23:22:43
xorshiftって周期とか分布の保証ってあるの?
もしないならM系列の方がましだと思うんだけど。
ググれば長周期の多項式も見つかるし。
2008/08/23(土) 01:50:28
劣化M系列と理解してるが
2008/08/23(土) 02:50:13
早くて軽くてrandよりマシ
2008/08/25(月) 16:31:11
>>119
excelVBAじゃ初期化するための種が結局16bitしかないんだから
Xorshiftの種も16bit種類しかなくならね?
124119
垢版 |
2008/08/27(水) 03:32:41
種 s は Long なので32bit種類あるが、負の場合は試してないので実質31bit種類。
2008/08/27(水) 10:43:09
VBAのRandomizeが16bit種類
それを使って初期化後rnd()で取得できる乱数も16bit種類
XorShiftの種にそれらを使うのなら結局系列は16bit種類

本当の最初の最初に32bitの乱数をセットするときにどうすればいいのか。
32bitのランダムな位置からXorShiftを開始するのに、そのうちの16bit分しか設定できない。
2008/08/27(水) 10:56:10
よく分からんが服を買いにいく服がない状態か
127119
垢版 |
2008/08/27(水) 14:14:51
>>125

確かにそうだ。困ったもんだ。
2008/08/27(水) 14:18:21
>>125
GetTickCountとかCryptGenRandomとかWin32APIに頼ればいいじゃない。
2008/08/29(金) 12:44:39
>>128
とりあえず
Private Declare Function GetTickCount Lib "kernel32" () As Long
後に
  GetTickCountを使って取得するようにしたよ。
2008/09/15(月) 02:50:11
暇だったからSFMTのC++ template実装やってみた
http://tripper.kousaku.in/20080914.html
2008/09/15(月) 11:02:02
GJ!
前スレからずっと待ってました
2008/09/15(月) 11:05:17
あ、なんだ
TR1対応じゃなくて純粋にテンプレート版なのか
2008/09/15(月) 14:24:14
そのうちBoost風に作り替える予定
2008/09/16(火) 23:55:19
乱数って巻き戻しできないの?
2008/09/17(水) 10:24:14
>>134
乱数の巻き戻しって何?
2008/09/17(水) 12:00:52
予想すると
あるシードでのn番めの乱数を出したあとに、n-1番目の乱数を
定数時でだせないか?
ってことでは
2008/09/17(水) 12:01:59
>>136
そのとおりでございやす
2008/09/17(水) 12:09:45
n-1番めからn番めを求める計算がたいてい非可逆だから無理
2008/09/17(水) 12:59:05
巻き戻す必要がある数分だけ乱数の結果を保存するしかないだろうなぁ
2008/09/17(水) 19:03:50
XorShift ならちょっと考えればわかる。
線形合同法なら 2^{31}-1 だけ進めた x=Ax+C の A と C を求めれば可能。
メルセンヌツイスタやWELLなら
http://www.iro.umontreal.ca/~lecuyer/myftp/papers/jumpf2.pdf
の方法で周期よりも一つ少ないところへジャンプすれば不可能ではないはず。
2008/09/17(水) 21:13:31
これって読み捨てるのと比べてどのぐらい高速?
MTの先頭の何百万個か読み捨てる処理に使えそう?
2008/09/17(水) 21:22:53
何百万よりは速いだろうが、100程度なら大差ない。

と、コード見ないで言ってみる
2008/09/25(木) 17:39:27
flashのActionScriptの乱数Math.randomって何bit?
2008/09/25(木) 22:19:58
25くらい
2008/09/29(月) 11:00:47
MTならFORTRANだけど
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/FORTRAN/fortran.html
この中に
revrand(): it generates prn in reverse order
って書いてあるけど
2008/10/05(日) 13:52:49
MTの巻き戻しのフォートランをCに移植してみた。

#define main dummy
#include "mt19937ar.c"
#undef main

unsigned long revgrnd(void) {
static unsigned long mag01[2]={0x0UL,MATRIX_A}; unsigned long y=mt[--mti],z,p,q,mt0L,mt0; int x,kk;
if (mti==0) {
z=mt[N-1]^mt[M-1]; x=(int)(z>>31); y=z^mag01[x]; p=(y<<1)|x; mt0L=LOWER_MASK&p; mt[0]=(mt[0]&UPPER_MASK)^mt0L; mt0=mt[0];
for (kk=N-1;kk>N-M;kk--) { z=mt[kk-1]^mt[kk-1+M-N]; x=(int)(z>>31); y=z^mag01[x]; q=(y<<1)|x; mt[kk]=(UPPER_MASK&p)|(LOWER_MASK&q); p=q; }
for (;kk;kk--) { z=mt[kk-1]^mt[kk-1+M]; x=(int)(z>>31); y=z^mag01[x]; q=(y<<1)|x; mt[kk]=(UPPER_MASK&p)|(LOWER_MASK&q); p=q; }
mt[0]=(UPPER_MASK&p)|mt0L; y=mt0; mti=N;
}
y^=(y>>11); y^=(y<<7)&0x9d2c5680UL; y^=(y<<15)&0xefc60000UL; y^=(y>>18); return y;
}

int main(void) {
int i; static unsigned long x[5000],y[5000];
for (i=0;i<5000;i++) x[i]=genrand_int32();
for (i=4999;i>=0;i--) y[i]=revgrnd();
for (i=0;i<5000;i++) if (x[i]!=y[i]) { printf("ERROR\n"); break; }
for (i=0;i<10;i++) printf("%08lx %08lx\n",x[i],y[i]);
return 0;
}
147デフォルトの名無しさん
垢版 |
2008/10/22(水) 21:18:38
とつげき東北とかいう人の乱数生成法を見て思いついたけど
メモリを確保して、読み書きする速度を計測すれば真の乱数できそう。
もともとはハードディスクの読み書きだが。これだと生成に時間食う。
148デフォルトの名無しさん
垢版 |
2008/10/22(水) 21:20:08
これね。

ハードウェア乱数生成ルーチンhdrand.c  by とつげき東北 
http://www.interq.or.jp/snake/totugeki/hdrand.htm
149デフォルトの名無しさん
垢版 |
2008/10/22(水) 21:24:52
でもメモリが余ってるときに均一に分布したとしても一杯になったら悪くなるかも試練ね
2008/10/22(水) 21:30:57
>>147
時には極端に偏ってくれないと真の乱数とはいえないな。
2008/10/22(水) 21:39:34
Unix の /dev/random は、デバイスドライバからそういう真の乱数を
生成するようなタイミングの情報をもらってデータを生成しているのだが...
2008/10/22(水) 21:41:38
実行時まで偏ってるかどうかすら分からんから実用的には疑問だけどな。
違うハードの組み合わせで似たようなシードが繰り返し出てしまう可能性も否定出来ん。
特性が誰にも分からんから乱数としてもいいだろうって発想は学問的ではないな。
153デフォルトの名無しさん
垢版 |
2008/10/22(水) 21:45:17
元手にするだけで、そのまま使うはず無いだろ。
たとえば、メモリ確保と読み書きした間隔が
1ナノ秒から100ナノ秒に分布しても偏りはでる。
そこは適切に処理して良い具合にする
2008/10/23(木) 00:39:08
メモリの読み書きレイテンシがどういう条件で決まるかわかって言ってるか?
155デフォルトの名無しさん
垢版 |
2008/11/03(月) 16:36:49
srand(0)とsrand(1)はその処理系でも同じ系列を生成するのですか?
2008/11/03(月) 17:29:47
その処理系て?
2008/11/03(月) 17:45:50
なんだろね?

ところでシードに関して系列という単語がよく出るけど違和感が…
乱数アルゴリズムの多くはシードは開始位置を決めるだけで
同じ乱数列を参照してるんだよね。
イメージ的には馬鹿でかい時計のようなものがあって、
秒針よりももっともっと小さい針が数字を拾ってる感じ。
系列という言葉だとそれぞれが全く違う乱数列のように聞こえる。
まあ現実的には2^128くらいあれば被ることはないと思うけどさ。
なんか気になる。
158155
垢版 |
2008/11/03(月) 17:52:33
まちがえました。
「その処理系でも」→「他の処理系でも」
でした。
2008/11/03(月) 17:59:04
srandはアルゴリズムからしてライブラリの実装次第だから
処理系以前に互換性はないと思え。
そもそもrand自体0からRAND_MAXまでの整数を出力するとかそういう定義しかないはず。
確かMTはその辺しっかりしていて、どこでも同じ結果が得られたはず。
2008/11/03(月) 19:41:28
>>157
rand() を実装するために使用する手法がいろいろあり、たとえば線形合同法・M系列・メルセンヌツイスタなどと呼ばれるものでしょうね。
手法とパラメータさえ同一であれば、当然同じ乱数列が生成されますが、rand()/srand() がどのように実装されているか、明確に
定義されているわけではないので、なんともいいようがないですね。
161デフォルトの名無しさん
垢版 |
2008/11/05(水) 19:25:05
>>148
>MTのような、周期の長い良質な擬似乱数の種としてこれを使えば、暗号ツールなどに実用的に応用できる。

MTのような暗号的に安全ではない擬似乱数の種に、暗号的に安全な乱数
を使っても出力は暗号的に安全ではないよな?
この記述はおかしいよな?
2008/11/05(水) 19:38:22
いや。

暗号的に安全ではない乱数生成系を、暗号関係の目的で使用するには、
出力ストリームに一方向ハッシュ関数を噛ませる方法がある。

その時に、シードは予測不可能なものである必要がある。
163デフォルトの名無しさん
垢版 |
2008/11/27(木) 22:25:54
NIST test 2.0bってどうなの?

なんかDFTで必ず落とされるんだけど。
とりあえずMT19937, G using SHA-1, Micali-Schnorr試したけど駄目だった。
2008/11/28(金) 09:42:11
そりゃすげぇ
真の乱数で試してみたら? スレ違いだけど...
2008/11/28(金) 11:42:49
真の乱数も試したけど駄目だった。
なんかp valueの分布が高いほうに偏ってる。
2008/11/30(日) 14:12:53
ffmpegで有名なMichael Niedermayerさんの記事
Pseudo random number generators
http://guru.multimedia.cx/pseudo-random-number-generators/
Pseudo random number generators 2
http://guru.multimedia.cx/pseudo-random-number-generators-2/
2009/01/05(月) 13:48:27
再現可能な擬似乱数じゃないけど、こんなんみつけた

ハードウェア乱数生成ルーチンhdrand.c
http://www.interq.or.jp/snake/totugeki/hdrand.htm
2009/01/05(月) 13:49:11
概要をコピペ
> テンポラリファイルフォルダにファイルを作成・削除し、その処理にかかった時間
> を高分解能パフォーマンスカウンタで計測して、処理時間を得る。
> 処理時間のビット列のうち、偏らないビットを乱数ビットとして利用する。
> ハードディスクのシーク時間や物理的な書き込み速度は、キャッシュや温度や湿度や
> Windowsの処理順などによってばらつきがあるので、良質なランダムビットがとれる。
> 測定されるビットの変化を最初にテストしておくことで(100回のビット発生で、
> 充分に変化が見られたビットだけを乱数に使用する)、処理速度の違いや、パフォーマンスカウンタの質の悪さ(例えば最下位ビットが必ず偶数や奇数になる可能性)も吸収できる。
2009/01/05(月) 15:42:33
WindowsってOSにこのてのメカニズム持ってないのか?
170デフォルトの名無しさん
垢版 |
2009/01/05(月) 17:21:26
ん、こういうの俺も昔遊びで作った事がある。
2009/01/05(月) 23:24:02
SFMTをExcelで使うなら、シード値ってどうやりゃいい?
sgenrand Timer * 1000
なんてのがどっかにあったが、なんかいまいちだよな。
2009/01/06(火) 00:12:34
>>169
ハードウェア使った処理が含まれているかどうかは分からないけど、
暗号論的に安全なのが欲しければ、CryptGenRandom使えということになっている。
2009/03/09(月) 06:06:19
>>166の続き。ffmpegではMT (Mersene twister)の質が悪く遅いということで非推奨(deprecated)にされました。質が良いのを使いたいならMLFGやKISS99を使えとのこと。
http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2009-March/021108.html
2009/03/09(月) 20:38:50
何が問題なんだろ。
松本さんの実装は、内部状態が1周した時に一斉に計算するようになってるので、
負荷が一定しないよなぁとは思うんだが、そういうとこじゃなくて、原理的に問題が
ある、っつってんだよね。
遅いというのは、はあそうですか、というだけなんだけど、blogのほう見ると、
XOR だけで構成されている、ってことをdisってるように見えるんだが...
2009/03/09(月) 20:41:31
KISS99もシンプルだし悪くはないんだが
2009/03/10(火) 00:23:48
>>174
ブログで参照しているこのペーパーにあるMT19937のテスト結果がCrash 2回、BigCrash 2回になっているからだからだと思う。
http://www.iro.umontreal.ca/~lecuyer/myftp/papers/testu01.pdf
誰か解説キボン
2009/03/10(火) 00:55:31
どんなアルゴリズムであっても一周期において均等分布を達成するとなると
全てのビットパターンを発生させるという点で結局M系列と同じ事になるんだよな。
するとマクロではみんな十分にランダムということになるから、
あとはミクロでのランダムさとその実装方法からくる計算量が問題なわけだな。
そのあたりに何かあるんじゃなかろか。
2009/03/10(火) 11:49:47
なんかその論文で提案してるテストでは、暗号学的な強度のあるジェネレータ以外は
のきなみパーフェクトでない結果を出してるみたいだ。
MTの成績が際立って悪いとかそういう結果ではないけど、ffmpegの作者的には
気になる結果なのかな?
2009/03/12(木) 22:15:08
元々そちらの専門家みたい
2009/04/17(金) 14:38:32
ダメ
2009/06/20(土) 20:18:13
http://en.wikipedia.org/wiki/Mersenne_twister#Alternatives
>The Mersenne Twister algorithm has received some criticism in the computer science field, notably by George Marsaglia.
>These critics claim that while it is good at generating random numbers, it is not very elegant and is overly complex to implement.
>Marsaglia has provided several examples of random number generators that are less complex yet which he claims provide significantly larger periods.
>For example, a simple complementary multiply-with-carry generator can have a period 10^33000 times as long, be significantly faster, and maintain better or equal randomness.[5][6]

*5 http://groups.google.com/group/comp.lang.c/browse_thread/thread/a9915080a4424068/
*6 http://groups.google.com/group/sci.crypt/browse_thread/thread/305c507efbe85be4
2009/06/20(土) 20:20:22
スワヒリ語でおk
2009/06/20(土) 20:54:53
なんか見覚えある名前だなーと思ったらXorshiftの人だったか
184デフォルトの名無しさん
垢版 |
2009/08/11(火) 03:30:02
あげ
2009/08/11(火) 13:07:46
次は185が出てくる
186デフォルトの名無しさん
垢版 |
2009/08/14(金) 01:57:19
お初ですが質問させてください。

現在sfmtについて作成者のHPにあるプログラムを見て勉強しています。

そこで64bitでシフトしてる部分があって、unsigned long long等が対応していないコンパイラでやる場合(32bitまでしかない)、何かいい方法はありますか?
自力で32bitでシフトしてもいいのですが…

初心者なので意味不明な説明かもしれませんが、参考になる方法やHP等ありましたら教えてください。
2009/08/14(金) 02:06:20
そこだけ__asm { } でインラインアセンブラで書くとか
2009/08/14(金) 08:53:55
int64が無いコンパイラだとasmも無さそうな
2009/08/14(金) 09:37:58
>>186
具体的なロジックを出さないと、曖昧なレスしかつかないよ。
190デフォルトの名無しさん
垢版 |
2009/08/14(金) 13:23:06
186です。

さっそくの返信ありがとうございます。

一応必要な部分だけアセンブラで書くことも可能だったと思いました。ただ現在携帯からの書き込みでキツいので、あとでまた書きます。
2009/08/15(土) 09:25:55
>>186
ないから自力でやれ
192デフォルトの名無しさん
垢版 |
2009/08/15(土) 20:24:26
どなたかご教示願います。
lehmerの線型合同法で作成される乱数値は、
初期値が同じでも計算機環境の違いにより変わることはありますか?
193デフォルトの名無しさん
垢版 |
2009/08/16(日) 02:20:18
うん
2009/08/16(日) 08:03:39
同じ数式を計算したのに計算機環境の違いで結果が変わることがあると思う?
2009/08/16(日) 08:23:56
浮動小数ならよくある
2009/08/16(日) 08:28:53
>>> (2 / 3) * 6
0
>>> 6 * 2 / 3
4
197192
垢版 |
2009/08/16(日) 11:13:06
>>193>>195>>196

ありがとうございました。
2009/08/17(月) 10:39:10
>>196
それらは「同じ数式」といえるのか?
2009/08/17(月) 13:04:38
>>194
有効桁数をちゃんと制御して、その動作が保証されている言語を使うなら、
バグでない限り有効桁数の範囲で変わることはない。

ただ同じ数式の同一の変数に別の値を与えたのなら変わってもおかしくないよ。
つかそれ以前に疑似乱数に関係あるのかw
200デフォルトの名無しさん
垢版 |
2009/09/03(木) 21:52:50
高次元均等分布性ってどういうこと?
p[i]=(x[Ni+0],x[Ni+1],…,x[Ni+N-1])
として作ったN次元乱数のN次元空間上散布図が
N次元空間内に平面作ったり偏ったりせずにぼんやり分布することと考えていいのかな?
2009/09/04(金) 07:05:22
誤解を恐れずに大雑把かつ簡単に言うと、
nビットの状態空間があるとして、
一周期の間に00...00から11...11までnビット(n桁)の数字が
過不足なく1回ずつ出現すること。
それが満たされると周期全体で直前のn-1ビットの状態に関わらず
次の1ビットの出現確立が必ず50:50になる。
つまりn-1次元で0と1が均等に分布したことになる。
状態空間を越えた次元では分布については全く保証出来ない。
だからMT含めて最近の擬似乱数はみんな状態空間をかなり大きめにとってる。

ただしこれはあくまで一周期のことであって、
一周期の一部を切り出した場合(通常の使用状況)では全然話が別ね。
マクロとミクロの違いというか両方同時に成り立たせるのは難しい。
よく0過多状態からの回復の速さが注目されるけど、
状態空間が大きいのに三項式とかだと(MTのことね)
0の多い区間はその前後でも0が多くなる。
逆に1の多い区間はその前後で1が多くなってトータルで均等になるわけさ。
202デフォルトの名無しさん
垢版 |
2009/10/04(日) 07:32:06
一月あげ
2009/10/05(月) 10:51:02
unko
2009/10/05(月) 15:32:33
Blum-Blum-Shub のC/C++ の実装コードが掲示されているサイトを知ってる人いませんか?
java での実装例はここにあるんですが
http://code.google.com/p/javarng/
2009/10/05(月) 18:00:56
1+1=2
2009/10/05(月) 18:22:02
>>204
BlumBlumShub.java を C/C++ に書き換えるだけじゃだめなん?
2009/10/05(月) 18:34:10
C/C++ に BigInteger の標準的な代替物でもあれば楽勝だろうけど
2009/10/05(月) 18:55:46
blumblum.c とfreelip いうファイルを見つけ
http://www.mindspring.com/~pate/crypto/chap05/blumblum.c
http://math.arizona.edu/~aprl/math/comp/bigint/
blumblum.c をgcc (GCC) 4.2.4 でコンパイルするのですが
zcopy とか、zfree とか、zなんとかという命令がコンパイルできなくて詰まっています。
何なんだこのz何とかというコマンドは?cの命令セットにはないぞ、posix かなんかの命令セットなのか?
2009/10/05(月) 19:01:35
>>204>>208です皆さんサンクスです。
>>207
その通りです、java からの移植はBigInteger を見て、ライブラリから作る羽目になりそうだったので
速攻あきらめました。boost にBlumBlumShubがあればいいのにな・・・・
2009/10/06(火) 00:46:53
>208
C/C++ ではコマンドとか命令とか命令セットとは言わないだろう、普通。
命令セットって言われたら CPU の instruction set を思い浮かべるわ。

で、freelip ってのの中に z* 入ってるじゃん。
C/C++ の分割コンパイルに詰まってるんだろうけど、とりあえず
gcc -o blumblum blumblum.c lip.c
とかで実行ファイルできない?

あと、boost vault には bigint が有ったような。使いものになるかしらんけど。
2009/10/06(火) 22:41:31
>210
gcc -o blumblum blumblum.c lip.c
このオペレーションも上手くいかない・・・orz

2009/10/06(火) 23:27:47
今度はオペレーションて
2009/10/07(水) 06:28:55
>>209 gmp じゃだめ?
2009/10/07(水) 08:53:51
どういうエラーが出てるのか書かなきゃ対処しようもないぞ
215デフォルトの名無しさん
垢版 |
2009/11/14(土) 09:37:55
xorshiftをunsigned longではなく32bit intの範囲内でやる方法はありませんか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況