2016-02-10 2 views
2

« srand »- это некорректная команда. Это первый раз, когда я использую D-языки. D, как set.seed в R.Что такое синтаксис в программе D, который является тем же самым параметром set.seed (1234) "в R

void main() { 
//srand(1234); ????// 
randInit(); 
auto x = RMatrix(10,1);foreach(rep; 0..1) { 
printR(rep.robj); 
double init = 0.0; 
    foreach(ii; 0..100) { 
     init = 0.5*init + rnorm(); 
    } 
    x[0,0] = init; 
    foreach(ii; 1..x.rows) { 
     x[ii,0] = 0.8*x[ii-1,0] + rnorm(); 
    } 

ответ

5

это зависит от того, какую библиотеку вы используете. вы можете сделать rand и srand если вы import core.stdc.stdlib; но лучший способ, вероятно, использовать std.random.

Do вы заботитесь о том, в чем конкретно находится семя? Если нет, вы можете использовать автоматический и просто вызвать некоторую случайную функцию:

// Generate a uniformly-distributed integer in the range [0, 14] 
auto i = uniform(0, 15); 

или увидеть его yoursef:

Random gen = Random(unpredictableSeed); 
auto r = uniform(0.0L, 100.0L, gen); 

Если вы используете свой собственный Random объект, не забудьте передать его ref к любой функции, которая использует его!

Random(unpredictableSeed) похоже на выполнение srand(time()) на других языках. Вы также можете сделать Random(1234) для использования определенного семени.

Эти примеры из здесь: http://dlang.org/phobos/std_random.html

+0

Не можете вы технически просто сделать 'единообразного (T1, T2)' без указания генератор? Насколько мне известно, «унифицированная (T1, T2)» будет инициализирована с помощью случайного генератора по умолчанию, который инициализируется «unpredictableSeed» – Bauss

+0

. Да, я сначала привел этот пример из документов! :) –

+0

Плохо, я не читал внимательно! :) – Bauss