<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

隨機抽取SV數組中的一個元素方法實現

sanyue7758 ? 來源:處芯積律 ? 2024-03-21 10:11 ? 次閱讀

SV中沒有提供專門從數組中抽取一個元素的方法。但可以通過下面的方法實現:

9dbfbcec-ddf8-11ee-a297-92fbcf53809c.png

module rand_select_array_element();
initial begin
  //declare
  int array[int]; 
  int idx=1;// 
  int rand_idx;//initial value is 0
  int element;//initial value is 0 
  int count=0;
  repeat(10) begin
    $display("**** idx = %d ***", idx);
    array[idx] = idx;
    idx = idx << 1;
  end


  foreach(array[i])
    $display("***array[%0d] = %0d",i, array[i]);


  //下面這一段有意思,好好品一品
  element = $urandom_range(array.size()-1);
  $display("****element=%0d", element);
  foreach(array[i])
    if(count++ == element) begin
      rand_idx = i;
      break;
    end
  $display("****%0d element array[%0d]=%0d", element, rand_idx, array[rand_idx]);


end
endmodule
其中,代碼:
foreach(array[i])
    if(count++ == element) begin
      rand_idx = i;
      break;
end
相當于代碼:
foreach(array[i])begin
    if(count == element) begin
      rand_idx = i;
      break;
    end
    count = count + 1;
end

其中$urandom_range()函數有兩個參數,一個是上限參數和一個可選的下限參數。

element=$urandom_range(3,10);//element值的范圍是3~10
element = $urandom_range(10, 3); //element值的范圍是3~10;上下限可倒置
element=$urandom_range(5);//element值的范圍是0~5
上述代碼的仿真結果,如下圖所示,element=4,相當于抽取數組array的第5個元素,即array[16]=16

9ddd627e-ddf8-11ee-a297-92fbcf53809c.png

小結:

對于定寬數組、隊列、動態數組和關聯數組可以使用$urandom_range($size(array)-1)

而對于隊列和動態數組還可以使用$urandom_range(array.size()-1)

如果想從一個關聯數組中隨機選取一個元素,需要逐個訪問它之前的元素,原因是沒辦法能夠直接訪問到第N個元素。上面的程序示范了如何從一個以整數值作為索引**的關聯數組中隨機選取一個元素。

注:如果數組是以字符串作為索引,只需要將idx的類型改為string即可。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    551

    瀏覽量

    20123
  • 代碼
    +關注

    關注

    30

    文章

    4555

    瀏覽量

    66767
  • 數組
    +關注

    關注

    1

    文章

    409

    瀏覽量

    25595

原文標題:隨機抽取SV數組中的一個元素

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    [教程] Matlab矩陣、向量及數組元素的引用方法和討論

    將它混淆,I*J*K叫做尺寸,而此時是三維數組,還有點Matlab沒有數組,它將標量視為1*1的二維
    發表于 05-07 21:48

    刪除或替換數組元素

    本帖最后由 samuergao 于 2014-11-21 14:01 編輯 曾經遇到想刪除數組某個元素的問題,比如要刪除或者替換一個數組中所有為10的
    發表于 07-01 16:24

    查詢數組(數值型數組一個元素出現的次數

    數組練習,查詢數組(數值型數組
    發表于 08-05 14:47

    數組相同元素的個數

    各位大神,請教個問題,兩數組,每個數組約有6萬元素
    發表于 04-07 17:27

    數組元素比較問題

    數組,我需要將數組的最小值找出來跟其他元素
    發表于 11-17 14:00

    數組元素如何轉化為坐標值

    計算,這樣就可以轉化為1500×1500坐標,橫縱坐標值可以用兩數組表示,以方便后面計算時用“索引數組”分別把坐標提取出來。下面是我
    發表于 02-15 21:24

    LabVIEW如何實現數組元素賦值?

    比如,我想讓有3648元素數組的前幾位和后幾位是同一個采集到的數:a[0]=a[1]=a
    發表于 04-07 23:34

    數組進行隨機排序的算法分析

    時,可以忽略運行速度,但當數據量達到10萬級時,運行次的時間大概需要2分鐘。效率極低。方法二:在數組長度范圍內生成
    發表于 05-24 15:48

    如何設計vi實現數組元素相乘?

    設計VI,輸入數組,將相鄰的元素相乘(從元素0和元素1開始的的
    發表于 05-30 21:35

    有什么高效率的方法數組抽取個位重新組成數組嗎?

    個數組,長度為32,現在需要從數組的每個元素抽出各個位來組成
    發表于 09-02 04:13

    labview如何可以將1×1的數組(該數組元素值是隨機變化的)轉換為1×N的數組

    請教各位大師了,labview如何可以將1×1的數組(該數組元素值是隨機變化的)轉換為
    發表于 11-23 17:30

    找到二維數組中最大最小值,元素50的小程序

    實現從一4*4的二維整數數組元素隨機數0-100組成)中找到最大值,最小值,并給出其索引。找到元素
    發表于 12-08 15:57

    matlab如何從個數組每隔幾個數抽取生成新的數組?

    matlab從個數組每隔幾個數抽取生成新的數組
    發表于 08-12 01:49

    C語言數組元素的指針

    C語言調用函數時虛實結合的方法都是采用“值傳遞”方式,當用變量名作為函數參數時傳遞的是變量的值,當用數組名作為函數參數時。 由于數組名代表的是數組
    的頭像 發表于 03-10 14:45 ?582次閱讀

    labview怎么查數組中相同元素的個數

    要查找LabVIEW中數組中相同元素的個數,可以使用以下步驟: 創建一個包含要查找的數值的數組。這可以通過手動輸入數組元素或從文件/其他數據
    的頭像 發表于 12-28 16:42 ?1020次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>