[發明專利]一種生成隨機數的方法和裝置有效
| 申請號: | 201710293777.5 | 申請日: | 2017-04-28 |
| 公開(公告)號: | CN107193530B | 公開(公告)日: | 2020-04-24 |
| 發明(設計)人: | 譚健文 | 申請(專利權)人: | 廣州酷狗計算機科技有限公司 |
| 主分類號: | G06F7/58 | 分類號: | G06F7/58 |
| 代理公司: | 北京三高永信知識產權代理有限責任公司 11138 | 代理人: | 郭晶 |
| 地址: | 510660 廣東省廣州*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 生成 隨機數 方法 裝置 | ||
本公開是關于一種生成隨機數的方法和裝置,屬于電子技術領域。所述方法包括:隨機生成第一預設位數的第一整數;通過將所述第一整數與預設數值進行邏輯運算,將所述第一整數轉化為位于第一預設區間內的第一浮點數,其中,所述第一預設區間為[0.5,1)或(?1,?0.5];根據賦值bzhi指令和所述第一整數的最高位的數值,得到第二浮點數,其中,所述第二浮點數為零或者區間調整偏移量;將所述第一浮點數與所述第二浮點數相加,得到位于第二預設區間內的所述第一預設位數的浮點數,作為隨機數生成結果,其中,所述第二預設區間為[0,1)。采用本公開,可以提高隨機數的生成效率。
技術領域
本公開是關于電子技術領域,尤其是關于一種生成隨機數的方法和裝置。
背景技術
隨著電子技術的發展,手機、計算機等終端得到了廣泛的應用,相應的終端功能越來越豐富。終端在實現某些功能時,往往需要生成隨機數,比如生成[0,1)之間的64位雙精度浮點數。
生成[0,1)之間的64位雙精度浮點數的方法一般是:生成64位整型隨機數,然后,采用cvtsi2sd指令將64位整型隨機數轉換為浮點隨機數,最后,將轉換的浮點隨機數乘以1與64位雙精度浮點數中的最大值的商,得到隨機生成結果。
在實現本公開的過程中,發明人發現至少存在以下問題:
基于上述處理方式,在得到64位浮點數時,需要執行耗時較長的cvtsi2sd指令和乘法運算,從而,導致隨機數的生成效率較低。
發明內容
為了克服相關技術中存在的隨機數的生成效率較低的問題,本公開提供了一種生成隨機數的方法和裝置。所述技術方案如下:
根據本公開實施例的第一方面,提供一種生成隨機數的方法,所述方法包括:
隨機生成第一預設位數的第一整數;
通過將所述第一整數與預設數值進行邏輯運算,將所述第一整數轉化為位于第一預設區間內的第一浮點數,其中,所述第一預設區間為[0.5,1)或(-1,-0.5];
根據賦值bzhi指令和所述第一整數的最高位的數值,得到第二浮點數,其中,所述第二浮點數為零或者區間調整偏移量;
將所述第一浮點數與所述第二浮點數相加,得到位于第二預設區間內的所述第一預設位數的浮點數,作為隨機數生成結果,其中,所述第二預設區間為[0,1)。
可選的,所述通過將所述第一整數與預設數值進行邏輯運算,將所述第一整數轉化為位于第一預設區間內的第一浮點數,包括:
通過將所述第一整數與第一預設數值進行與運算,得到第二整數;
通過將所述第二整數與第二預設數值進行或運算,得到第一浮點數,其中,所述第一預設數值的最高位和從最低位開始的第二預設位數的數值為1、剩余位數的數值為零,所述第二預設數值的從最低位開始的第二預設位數的數值為零、剩余位數的數值為[0.5,1)對應的浮點數的最高位和指數位的數值。
可選的,所述當所述第一預設位數為64時,所述第二預設位數為52,當所述第一預設位數為32,所述第二預設位數為23。
可選的,所述根據賦值bzhi指令和所述第一整數的最高位的數值,得到第二浮點數,其中,所述第二浮點數為零或者區間調整偏移量,包括:
如果所述第一整數的最高位的數值為零,則根據賦值bzhi指令,得到第二浮點為零;
如果所述第一整數的最高位的數值為1,則根據所述bzhi指令,得到第二浮點為區間調整偏移量。
可選的,所述區間調整偏移量為小于1的最大浮點數。
根據本公開實施例的第二方面,提供一種生成隨機數的裝置,所述裝置包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣州酷狗計算機科技有限公司,未經廣州酷狗計算機科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710293777.5/2.html,轉載請聲明來源鉆瓜專利網。





