首頁  >  問答  >  主體

c++ - if(rand()<p*RAND_MAX) 是在做什么筛选?

PHP中文网PHP中文网2713 天前1025

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-04-17 15:04:57

    拋磚引玉

    rand()產生0RAND_MAX 之間的整數,那麼p*RAMD_MAX 相當於就是一個閾值,當「擲骰子」低於閾值時,當前迭代到的兩個點之間連起來。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 15:04:57

    完全圖中邊數與點數關係是:E = V (V-1) / 2,也就是每個點與剩下V-1個點都有邊連接,p作為機率,滿足了線性(要求的邊數越大,則機率越大,則兩點之間越可能有邊相連,圖越接近完全圖)。假設rand()傳回[0, RAND_MAX]間,則E為0時p=0,E為V(V-1)/2時p=1。根據隨機產生的rand決定當前(i,j)是否直連。不過這個是有向圖?

    回覆
    0
  • 取消回覆