0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

隨機(jī)抽取SV數(shù)組中的一個(gè)元素方法實(shí)現(xiàn)

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

SV中沒有提供專門從數(shù)組中抽取一個(gè)元素的方法。但可以通過下面的方法實(shí)現(xiàn):

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
相當(dāng)于代碼:
foreach(array[i])begin
    if(count == element) begin
      rand_idx = i;
      break;
    end
    count = count + 1;
end

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

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

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

小結(jié):

對(duì)于定寬數(shù)組、隊(duì)列、動(dòng)態(tài)數(shù)組和關(guān)聯(lián)數(shù)組可以使用$urandom_range($size(array)-1)

而對(duì)于隊(duì)列和動(dòng)態(tài)數(shù)組還可以使用$urandom_range(array.size()-1)

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

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

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    579

    瀏覽量

    20516
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68612
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    417

    瀏覽量

    25947

原文標(biāo)題:隨機(jī)抽取SV數(shù)組中的一個(gè)元素

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    將它混淆,I*J*K叫做尺寸,而此時(shí)是三維數(shù)組,還有點(diǎn)Matlab沒有數(shù)組,它將標(biāo)量視為1*1的二維
    發(fā)表于 05-07 21:48

    查詢個(gè)數(shù)組(數(shù)值型數(shù)組一個(gè)元素出現(xiàn)的次數(shù)

    數(shù)組練習(xí),查詢個(gè)數(shù)組(數(shù)值型數(shù)組
    發(fā)表于 08-05 14:47

    個(gè)數(shù)組相同元素的個(gè)數(shù)

    各位大神,請(qǐng)教個(gè)問題,兩個(gè)數(shù)組,每個(gè)數(shù)組約有6萬個(gè)元素
    發(fā)表于 04-07 17:27

    數(shù)組元素如何轉(zhuǎn)化為坐標(biāo)值

    計(jì)算,這樣就可以轉(zhuǎn)化為1500×1500個(gè)坐標(biāo),橫縱坐標(biāo)值可以用兩個(gè)數(shù)組表示,以方便后面計(jì)算時(shí)用“索引數(shù)組”分別把坐標(biāo)提取出來。下面是我
    發(fā)表于 02-15 21:24

    數(shù)組進(jìn)行隨機(jī)排序的算法分析

    時(shí),可以忽略運(yùn)行速度,但當(dāng)數(shù)據(jù)量達(dá)到10萬級(jí)時(shí),運(yùn)行次的時(shí)間大概需要2分鐘。效率極低。方法二:在數(shù)組長度范圍內(nèi)生成個(gè)
    發(fā)表于 05-24 15:48

    如何設(shè)計(jì)個(gè)vi實(shí)現(xiàn)數(shù)組元素相乘?

    設(shè)計(jì)VI,輸入數(shù)組,將相鄰的對(duì)元素相乘(從元素0和元素1開始的的
    發(fā)表于 05-30 21:35

    有什么高效率的方法數(shù)組抽取個(gè)位重新組成數(shù)組嗎?

    個(gè)數(shù)組,長度為32,現(xiàn)在需要從數(shù)組的每個(gè)元素抽出各個(gè)位來組成
    發(fā)表于 09-02 04:13

    labview如何可以將個(gè)1×1的數(shù)組(該數(shù)組內(nèi)元素值是隨機(jī)變化的)轉(zhuǎn)換為個(gè)1×N的數(shù)組

    請(qǐng)教各位大師了,labview如何可以將個(gè)1×1的數(shù)組(該數(shù)組內(nèi)元素值是隨機(jī)變化的)轉(zhuǎn)換為
    發(fā)表于 11-23 17:30

    matlab如何從個(gè)數(shù)組每隔幾個(gè)數(shù)抽取個(gè)生成新的數(shù)組?

    matlab從個(gè)數(shù)組每隔幾個(gè)數(shù)抽取個(gè)生成新的數(shù)組
    發(fā)表于 08-12 01:49

    Labview數(shù)組相同元素去重及相同元素個(gè)數(shù)源代碼免費(fèi)下載

    Labview源代碼,可以去掉重復(fù)的一位數(shù)組元素,新生成只有唯元素個(gè)數(shù)組,并顯示有多少
    發(fā)表于 08-31 08:00 ?104次下載
    Labview<b class='flag-5'>一</b>維<b class='flag-5'>數(shù)組</b>相同<b class='flag-5'>元素</b>去重及相同<b class='flag-5'>元素</b>個(gè)數(shù)源代碼免費(fèi)下載

    數(shù)組相同元素個(gè)數(shù)統(tǒng)計(jì)

    數(shù)組相同元素個(gè)數(shù)統(tǒng)計(jì)
    發(fā)表于 05-31 16:48 ?7次下載

    用二維數(shù)組存儲(chǔ)最小元素是怎么實(shí)現(xiàn)的?

    用二維數(shù)組存儲(chǔ)最小元素是怎么實(shí)現(xiàn)的?? 在計(jì)算機(jī)編程,數(shù)組種非常重要的數(shù)據(jù)結(jié)構(gòu)之
    的頭像 發(fā)表于 09-13 11:17 ?536次閱讀

    js判斷是否在數(shù)組存在

    JavaScript 是種用于客戶端和服務(wù)器端編程的腳本語言。它提供了許多內(nèi)置函數(shù)和方法,以便進(jìn)行數(shù)組操作。 在本文中,我們將學(xué)習(xí)如何使用 JavaScript 來判斷
    的頭像 發(fā)表于 11-30 16:23 ?1142次閱讀

    labview怎么查數(shù)組相同元素的個(gè)數(shù)

    要查找LabVIEW數(shù)組相同元素的個(gè)數(shù),可以使用以下步驟: 創(chuàng)建個(gè)包含要查找的數(shù)值的
    的頭像 發(fā)表于 12-28 16:42 ?3548次閱讀

    PHP數(shù)組的使用方法!

    如何創(chuàng)建數(shù)組、添加/刪除元素、訪問數(shù)組元素、遍歷數(shù)組以及使用數(shù)組方法和函數(shù)等等。 首先,我們來看
    的頭像 發(fā)表于 01-12 15:11 ?551次閱讀