我試圖做到這一點,如下所示產生一定範圍內的隨機數:如何使用GMP
int main(){
mpz_t v;
mpf_class u,w,x[3][200];
for(i=0;i<n;i++){
for(j=0;j<3;j++){
mpz_random(v,1000000);
mpf_div_ui(w.get_mpf_t(),v,1000000);
mpf_div(u.get_mpf_t(),1,2);
mpf_sub(w.get_mpf_t(),w.get_mpf_t(),u);
mpf_mul(x[i][j].get_mpf_t(),w.get_mpf_t(),2);
}
}
}
但使用整數和漂浮起來不起作用。基本上嘗試分配隨機整數,除以最大整數可以給一個數字(不一定是整數)在0和1之間。減一半並乘以2給出一個-1到1之間的隨機數,這是我想要的,但是就像我說的那樣由於類型導致問題。
你在說什麼「因類型引起的問題」?你可能要考慮使用'mpf_urandomb()'。這可能是簡單的2先乘,然後減去1 – jxh
@ user315052對不起我的意思是,我得到的錯誤說「無效的轉換從int爲const ......」意思是由於v爲整數,它可以」 t用於mpf函數。 – adrem7
@ user315052我看過mpf_urandomb()函數,它看起來像我想要的,除非我不知道「狀態」是什麼意思,有人可以解釋一下。 – adrem7