Итак, я реализую эвристический алгоритм, и я наткнулся на эту функцию.
У меня есть массив от 1 до n (от 0 до n-1 на C, w / e). Я хочу выбрать количество элементов, которые скопирую в другой массив. Учитывая параметр y (0 По словам автора, «l» - случайное число: 0 Это тестовый код C. «x» - это параметр «l». И вот некоторые результаты (с усечением 5 десятичных знаков): Статья: http://www.scribd.com/doc/3097936/cAS- The-Cunning-Ant-System стр. 6 и 7. или выполните поиск «cAS: хитрая система муравьев» в Google. Так что я делаю не так? я не верю, что автор ошибается, потому что существует более пяти статей, описывающих эту же функцию. все мои интернет-сети тем, кто мне помогает. Это важно для моей работы. Спасибо :) //hate how code tag works, it's not even working now
int n = 100;
float y = 0.2;
float n_copy;
for(int i = 0 ; i < 20 ; i++)
{
float x = (float) (rand()/(float)RAND_MAX); // 0 <= x <= 1
x = x * n; // 0 <= x <= n
float p1 = (1 - y) / (n*y);
float p2 = (1 - ( x / n ));
float exp = (1 - (2*y)) / y;
p2 = pow(p2, exp);
n_copy = p1 * p2;
printf("%.5f\n", n_copy);
}
0.03354
0.00484
0.00003
0.00029
0.00020
0.00028
0.00263
0.01619
0.00032
0.00000
0.03598
0.03975
0.00704
0.00176
0.00001
0.01333
0.03396
0.02795
0.00005
0.00860