2010-08-03 09:31:20| 分類(lèi): 電腦日常應(yīng)用 | 標(biāo)簽:rand 隨機(jī)數(shù) int 公式 函數(shù) |字號(hào)大中小 訂閱
求教:我的電子表格中rand()函數(shù)的取值范圍是-1到1,如何改回1到0
回答:有兩種修改辦法:
是[1-rand()]/2,
或[1+rand()]/2。
效果是一樣的,都可生成0到1之間的隨機(jī)數(shù)
電子表格中RAND()函數(shù)的取值范圍是0到1,公式如下:
=RAND()
如果取值范圍是1到2,公式如下:
=RAND()*(2-1)+1
RAND( )
注解:
若要生成 a 與 b 之間的隨機(jī)實(shí)數(shù):
=RAND()*(b-a)+a
如果要使用函數(shù) RAND 生成一隨機(jī)數(shù),并且使之不隨單元格計(jì)算而改變,可以在編輯欄中輸入“=RAND()”,保持編輯狀態(tài),然后按 F9,將公式永久性地改為隨機(jī)數(shù)。
示例
RAND() 介于 0 到 1 之間的一個(gè)隨機(jī)數(shù)(變量)
=RAND()*100 大于等于 0 但小于 100 的一個(gè)隨機(jī)數(shù)(變量)
excel產(chǎn)生60-70隨機(jī)數(shù)公式
=RAND()*10+60
要取整可以用=int(RAND()*10+60)
我想用excel在B1單元個(gè)里創(chuàng)建一個(gè)50-80的隨機(jī)數(shù)且這個(gè)隨機(jī)數(shù)要大于A1單元個(gè)里的數(shù)值,請(qǐng)教大家如何編寫(xiě)公式!
整數(shù):=ROUND(RAND()*(80-MAX(50,A1+1))+MAX(50,A1+1),0)
無(wú)需取整數(shù):=RAND()*(80-MAX(50,A1))+MAX(50,A1)
要求:
1,小數(shù)保留0.1
2,1000-1100范圍
3,不要出現(xiàn)重復(fù)
=LEFT(RAND()*100+1000,6)
至于不許重復(fù)
你可以設(shè)置數(shù)據(jù)有效性
在數(shù)據(jù)-有效性設(shè)
=countif(a:a,a1)=1
選中a列設(shè)有效性就好了
其他列耶可以
急求excel隨機(jī)生成數(shù)字的公式,取值要在38.90-44.03之間,不允許重復(fù)出現(xiàn),保留兩位小數(shù),不允許變藏
=round(RAND()*5+38.9,2)
公式下拉
Excel隨機(jī)數(shù)
Excel具有強(qiáng)大的函數(shù)功能,使用Excel函數(shù),可以輕松在Excel表格產(chǎn)生一系列隨機(jī)數(shù)。
1、產(chǎn)生一個(gè)小于100的兩位數(shù)的整數(shù),輸入公式=ROUNDUP(RAND()*100,0)。
RAND()這是一個(gè)隨機(jī)函數(shù),它的返回值是一個(gè)大于0且小于1的隨機(jī)小數(shù)。ROUNDUP函數(shù)是向上舍入數(shù)字,公式的意義就是將小數(shù)向上舍入到最接近的整數(shù),再擴(kuò)大100倍。
2、產(chǎn)生一個(gè)四位數(shù)N到M的隨機(jī)數(shù),輸入公式=INT(RAND()*(M-N+1))+N。
這個(gè)公式中,INT函數(shù)是將數(shù)值向下取整為最接近的整數(shù);因?yàn)樗奈粩?shù)的隨機(jī)數(shù)就是指從1000到9999之間的任一隨機(jī)數(shù),所以M為9999,N為1000。RAND()的值是一個(gè)大于0且小于1的隨機(jī)小數(shù),M-N+1是9000,乘以這個(gè)數(shù)就是將RAND()的值對(duì)其放大,用INT函數(shù)取整后,再加上1000就可以得到這個(gè)范圍內(nèi)的隨機(jī)數(shù)。[公式=INT(RAND()*(9999-1000+1))+1000]
3、Excel函數(shù)RANDBETWEEN是返回位于兩個(gè)指定數(shù)之間的一個(gè)隨機(jī)數(shù)。使用這一個(gè)函數(shù)來(lái)完成上面的問(wèn)題就更為簡(jiǎn)單了。要使用這個(gè)函數(shù),可能出現(xiàn)函數(shù)不可用,并返回錯(cuò)誤值#NAME?。
選擇"工具"菜單,單擊"加載宏",在"可用加載宏"列表中,勾選"分析工具庫(kù)",再單擊"確定"。接下來(lái)系統(tǒng)將會(huì)安裝并加載,可能會(huì)彈出提示需要安裝源,也就是office安裝盤(pán)。放入光盤(pán),點(diǎn)擊"確定",完成安裝。
現(xiàn)在可以在單元格輸入公式=RANDBETWEEN(1000,9999)。
最后,你可以將公式復(fù)制到所有需要產(chǎn)生隨機(jī)數(shù)的單元格,每一次打開(kāi)工作表,數(shù)據(jù)都會(huì)自動(dòng)隨機(jī)更新。在打開(kāi)的工作表,也可以執(zhí)行功能鍵F9,每按下一次,數(shù)據(jù)就會(huì)自動(dòng)隨機(jī)更新了。
用Excel隨機(jī)函數(shù)rand()生成隨機(jī)數(shù)和隨機(jī)字母
以前使用Excel的隨機(jī)數(shù)函數(shù),生成過(guò)固定位數(shù)的數(shù)字卡的卡號(hào)和密碼,效果還是蠻好的!現(xiàn)在又有新的需求了,那就是要生成隨機(jī)字母!為了避免每次有新的需求都要重新寫(xiě)日志,干脆一起寫(xiě)出來(lái)吧!
1、生成隨機(jī)數(shù)字
(1)生成隨機(jī)數(shù)比較簡(jiǎn)單,=rand()即可生成0-1之間的隨機(jī)數(shù);
(2)如果要是整數(shù),就用=int(rand())*10,表示0至9的整數(shù),以此類(lèi)推;
(3)如果要生成a與b之間的隨機(jī)實(shí)數(shù),就用=rand()*(b-a)+a,如果是要整數(shù)就用=int(rand()*(b-a))+a;稍微擴(kuò)充一下,就能產(chǎn)生固定位數(shù)的整數(shù)了。
注意:如果要使用函數(shù)rand()生成一隨機(jī)數(shù),并且使之不隨單元格計(jì)算而改變,可以在編輯欄中輸入“=rand()”,保持編輯狀態(tài),然后按F9,將公式永久性地改為隨機(jī)數(shù)。不過(guò),這樣只能一個(gè)一個(gè)的永久性更改,如果數(shù)字比較多,也可以全部選擇之后,另外選擇一個(gè)合適的位置粘貼,粘貼的方法是點(diǎn)擊右鍵,選擇“選擇性粘貼”,然后選擇“數(shù)值”,即可將之前復(fù)制的隨機(jī)數(shù)公式產(chǎn)生的數(shù)值(而不是公式)復(fù)制下來(lái)!
2、產(chǎn)生隨機(jī)字母
隨機(jī)小寫(xiě)字母:=CHAR(INT(RAND()*26)+97)
隨機(jī)大寫(xiě)字母:=CHAR(INT(RAND()*26)+65)
隨機(jī)大小寫(xiě)混合字母:=CHAR(INT(RAND()*26)+if(INT(RAND()*2)=0,65,97))
3、產(chǎn)生隨機(jī)的六位數(shù)的字母和數(shù)字混合
=CONCATENATE(IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*9+48)),IF(INT(RAND()*2)=0,CHAR(INT(RAND()*25+65)),CHAR(INT(RAND()*25+97)))))
4、隨機(jī)不重復(fù)數(shù)字序列的生成方法
有些情形下,我們需要生成一個(gè)不重復(fù)的隨機(jī)序列。
比如:我們要模擬洗牌,將一副撲克牌去掉大小怪后剩下的52張打亂。
比較笨的方法是在1-52間每生成一個(gè)隨機(jī)數(shù)后,檢查該隨機(jī)數(shù)是否出現(xiàn)過(guò),如果是第一次出現(xiàn),就放到序列里,否則重新生成一個(gè)隨機(jī)數(shù)作檢查。在 excel worksheet里面用這種辦法,會(huì)造成if多層嵌套,不勝其煩,在VBA里面做簡(jiǎn)單一些,但是效率太差,越到序列的后端,效率越差。
當(dāng)然也有比較好的辦法,在VBA里面,將a(1)-a(52)分別賦予1-52,然后做52次循環(huán),例如,第s次生成一個(gè)1-52間的隨機(jī)數(shù)r,將a(s)與a(r)互換,這樣的話(huà),就打亂了原有序列,得到一個(gè)不重復(fù)的隨機(jī)序列。
VBA里這個(gè)算法是很容易實(shí)現(xiàn)的,但是,出于通用性和安全考慮,有的時(shí)候我們并不希望用VBA,我們來(lái)看看在worksheet里面如何利用內(nèi)置函數(shù)實(shí)現(xiàn)這個(gè)功能。
(1)在A1-A52間填入"=INT(RAND()*52)+1",產(chǎn)生1-52間的隨機(jī)數(shù),注意這里是有重復(fù)的
(2)在B1-B52間填入1-52
(3)在C54-BB54填入1-52
(4)在C1填入"=IF(ROW()=C$54,INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),IF(ROW()=INDEX($A$1:$A$52,C$54),INDEX(B$1:B$52,C$54),B1))"。
分項(xiàng)解釋?zhuān)?/p>
a:ROW()=C$54,如果當(dāng)前行等于當(dāng)前交換所排的序號(hào)
b:INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),返回在B1到B52中選擇A1:A52中的第C54個(gè)值
c:IF(ROW()=INDEX($A$1:$A$52,C$54),否則的話(huà),如果當(dāng)前行等于A1:A52中第C54個(gè)值,則:
d:INDEX(B$1:B$52,C$54),返回B1:B52中的第C54個(gè)值
e:若以上條件都不滿(mǎn)足,則返回B1
(5)將C1復(fù)制到C1:BA52這個(gè)區(qū)域里面
(6)在BA1:BA52中,我們就得到了一個(gè)不重復(fù)的隨機(jī)序列,按F9可以生成一個(gè)新序列
如何在EXCEL中生成隨機(jī)數(shù)
RAND
返回大于等于 0 及小于 1 的均勻分布隨機(jī)數(shù),每次計(jì)算工作表時(shí)都將返回一個(gè)新的數(shù)值。語(yǔ)法:RAND( )
說(shuō)明:若要生成 a 與 b 之間的隨機(jī)實(shí)數(shù),請(qǐng)使用:
RAND()*(b-a)+a
如果要生成整數(shù),則輸入:=INT(RAND()*(b-a)+a)
如果要使用函數(shù) RAND 生成一隨機(jī)數(shù),并且使之不隨單元格計(jì)算而改變,可以在編輯欄中輸入“=RAND()”,
保持編輯狀態(tài),然后按 F9,將公式永久性地改為隨機(jī)數(shù)。
如果您將示例復(fù)制到空白工作表中,可能會(huì)更易于理解該示例。
操作方法
創(chuàng)建空白工作簿或工作表。
請(qǐng)?jiān)凇皫椭敝黝}中選取示例。不要選取行或列標(biāo)題。
從幫助中選取示例。
按 Ctrl+C。
在工作表中,選中單元格 A1,再按 Ctrl+V。
若要在查看結(jié)果和查看返回結(jié)果的公式之間切換,請(qǐng)按 Ctrl+`(重音符),或在“工具”菜單上,指向“公式審核”,再單擊“公式審核模式”。
1
2
3
A B
公式 說(shuō)明(結(jié)果)
=RAND() 介于 0 到 1 之間的一個(gè)隨機(jī)數(shù)(變量)
=RAND()*100 大于等于 0 但小于 100 的一個(gè)隨機(jī)數(shù)(變量)
如果只要顯示重復(fù)的數(shù)據(jù),可以使用條件格式來(lái)顯示:
選定AB列,點(diǎn)"格式"->"條件格式",將條件1設(shè)為:
公式=COUNTIF($A:$B,A1)>1
點(diǎn)"格式"->"字體"->"顏色",選中紅色,點(diǎn)兩次"確定".
用條件格式
選中A列,格式-條件格式,條件選擇公式,并輸入公式:=COUNTIF(A:A,A1)>1,格式按鈕,設(shè)置字體顏色或背景(圖案)顏色。
=================================
生成 定量個(gè)數(shù)字 最小值 --- 最大值 間的 不重復(fù)隨機(jī)數(shù)
'
'生成不重復(fù)隨機(jī)數(shù)的代碼:
’歡樂(lè)小爪(QQ:461699029)
'方法一
Sub 指定數(shù)據(jù)段不重復(fù)隨機(jī)數(shù)()
Dim s%
Dim xm() As String, arr() As String '聲明變量
Dim 隨機(jī)數(shù)個(gè)數(shù)%, 最小值%, 最大值%, 隨機(jī)數(shù)值%
隨機(jī)數(shù)個(gè)數(shù) = Range("c1")
最小值 = Range("c2")
最大值 = Range("c3")
If 隨機(jī)數(shù)個(gè)數(shù) < 1 Or 最小值 > 最大值 Then Exit Sub
If 隨機(jī)數(shù)個(gè)數(shù) > (最大值 - 最小值 + 1) Then Exit Sub
On Error Resume Next
Columns("A:A").ClearContents
ReDim arr(1 To 最大值 - 最小值 + 1)
For s = 1 To 最大值 - 最小值 + 1
arr(s) = 最小值 + s - 1
Next
ReDim xm(1 To 隨機(jī)數(shù)個(gè)數(shù))
For s = 1 To 隨機(jī)數(shù)個(gè)數(shù)
隨機(jī)數(shù)值 = Int(Rnd() * (最大值 - s - 最小值) + 最小值) '-----a語(yǔ)句
xm(s) = arr(隨機(jī)數(shù)值 - (最小值 - 1)) '-----下面一句對(duì)arr數(shù)組重新排序,本句為賦值
arr(隨機(jī)數(shù)值 - (最小值 - 1)) = arr(最大值 - s)
Next
Sheets(1).Range("a1").Resize(隨機(jī)數(shù)個(gè)數(shù)) = WorksheetFunction.Transpose(xm)
End Sub
========================================
小妖提供一下代碼(),僅以感謝
Sub 產(chǎn)生不重復(fù)隨機(jī)整數(shù)()
Dim mr As Range
For Each mr In Range("a1:a10") '---這樣賦值單元格的A
Do '---do…loop until語(yǔ)句,指循環(huán)至loop until后的條件實(shí)現(xiàn)即終止
mr = Int(Rnd() * 10 + 1) '----這樣賦值單元格的
Loop Until Application.CountIf(Range("a1:a10"), mr) = 1
Next mr
End Sub
-*-*-*-*-*-*-**********-*-*-*-*-*-*--------------------------
Sub aa()
Range("a1:a65") = ""
Dim num As Long, arr(1 To 65) As Long, arr2(1 To 65, 0) As Long, x As Long
t1 = Timer
For x = 1 To 65
arr(x) = x
Next x
For x = 1 To 65
num = Int(Rnd() * (65 - x) + 1) '-----a語(yǔ)句
arr2(x, 0) = arr(num) '-----下面一句對(duì)arr數(shù)組重新排序,本句為賦值
arr(num) = arr(65 - x + 1)
Next x
Range("a1").Resize(65) = arr2
MsgBox "運(yùn)行時(shí)間" & Format(Timer - t1, "0.000") & "秒"
End Sub
======================
在 0、5、10 中間隨機(jī)生成一個(gè)數(shù)
=IF(RAND()>0.3,IF(RAND()>0.6,10,5),0)
聯(lián)系客服