私は2つの関数を含むCファイルを使用しようとしています。その1つは変数のアドレスを引数として取る関数です"&"とその変数の値を変更します(少なくともこれは私が信じるものです))。"adress"を関数の引数として渡す - Python 3
int seed1;
int seed2;
rmarin_(seed1,seed2);
float rand;
ranmar1_(&rand);
それで変数「ランド」の値は、いくつかのようになります。ここではCでの使用例は以下のようになり機能(彼らは一種の理解することが複雑である)
#define LEN 255
static float u[97],c,cd,cm;
static int i97,j97,ileft;
ranmar1_(ran)
float *ran;
{
register float uni, cint;
register float* listptr;
register int ivec,i97int,j97int;
static float rvec[LEN];
if (ileft < 0)
{
i97int = i97;
j97int = j97;
cint = c;
for (ivec = 0; ivec <= LEN; ivec++)
{
uni = u[i97int] - u[j97int];
if (uni < 0) uni++;
u[i97int--] = uni;
if (i97int < 0) i97int = 96;
j97int--;
if (j97int < 0) j97int = 96;
cint -= cd;
if (cint < 0.) cint += cm;
uni -= cint;
if (uni < 0.) uni++;
rvec[ivec] = uni;
}
ileft = LEN;
c = cint;
j97 = j97int;
i97 = i97int;
}
*ran = rvec[ileft--];
}
/*****************************************************************/
rmarin_(ij,kl)
int ij,kl;
{
int i,j,k,l,m,ii,jj;
float s,t;
printf("%d\n",ij);
printf("%d\n",kl);
printf("*******************\n");
i = ((ij/177) % 177) + 2;
j = (ij % 177) + 2;
k = ((kl/169) % 178) + 1;
l = kl % 169;
for (ii = 0; ii <= 96; ii++)
{
s = 0;
t = .5;
for (jj = 1; jj <= 24; jj++)
{
m = (((i*j) % 179)*k) % 179;
i = j;
j = k;
k = m;
l = (53*l +1) % 169;
if (((l*m) % 64) >= 32) s = s + t;
t = 0.5 * t;
}
u[ii] = s;
}
c = 362436./16777216.;
cd = 7654321./16777216.;
cm = 16777213./16777216.;
i97 = 96;
j97 = 32;
ileft=(-1);
}
/*****************************************************************/
です0と1の間の擬似ランダム値。 私はこれらの関数をPythonで使用しようとしていますが、問題があります。私はを&x
として使用しています。なぜなら、私はそれが少なくとも関連していることが分かったからです。ここに私のコードはありますか?
私はまずCファイルを使って.soファイルを作成し、それをPython3で使用しています。問題は、xの値が変わらないことです。 xの値を0と1の間の擬似乱数に変更するにはどうすればよいですか?
Cコードはどこにありますか?これらのANSI標準関数ヘッダーより前のものです。だけでなく、undechipherable。 –
このコードを使用する必要はありますか?それを変更して、ポインタパラメータを介して変更する代わりに値を返すようにすることができます。 – Gerhardh
私の教授が私に教えてくれて、Pythonでそれを使うように言った。このコードは、1989年にミシガン大学のByron Roeによって作成されました。 変更については正直言って私はそこで何が起こっているのかよく分かりません。私は恐らく、Cコードを持たずに、Pythonで良い解決策を見つけることは可能かもしれないと思いました。 –