Функция плотности вероятности из статьи, реализованная с использованием C ++, не работает должным образом

Итак, я реализую эвристический алгоритм, и я наткнулся на эту функцию.

У меня есть массив от 1 до n (от 0 до n-1 на C, w / e). Я хочу выбрать количество элементов, которые скопирую в другой массив. Учитывая параметр y (0

По словам автора, «l» - случайное число: 0

Это тестовый код C. «x» - это параметр «l».

//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);  
}  

И вот некоторые результаты (с усечением 5 десятичных знаков):

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 

Статья:

http://www.scribd.com/doc/3097936/cAS- The-Cunning-Ant-System

стр. 6 и 7.

или выполните поиск «cAS: хитрая система муравьев» в Google.

Так что я делаю не так? я не верю, что автор ошибается, потому что существует более пяти статей, описывающих эту же функцию.

все мои интернет-сети тем, кто мне помогает. Это важно для моей работы.

Спасибо :)

6
задан user 20 November 2014 в 03:58
поделиться