❶ python如何一次性取出多個隨機數
Python內置的函數一次只能生成一個隨機數,然而你可以方便地使用表理解(list comprehension)一次性生成多個隨機數。示例的代碼如下:
importrandom
[random.randint(0,100)for_inrange(10)]
#[57,93,22,55,41,64,47,32,93,61]
range函數輸入不同的值,可以設置需要生成隨機數的個數,上面的例子中生成了10個隨機數。
❷ python代碼根據學號選出10個同學
摘要 報錯了……說是dictkeys這個對象不是」可下標的「。這個問題,網路了半天也沒有人說個所以然,都說在外面加個list()就可以解決。私以為,random庫中的choice()函數,可能是基於類似於索引(下標)這類東西進行數據選擇的,而字典的鍵本身類型就是dict_type,並沒有索引,所以就沒法運行choice()。
❸ python隨機提取文件中的某一列的任意一個值
需要某列的某個值?
文本格式
1 2 3
4 5 6
如果是文本的話首先f.readlines()獲得所有行,
然後用隨機函數,random.choice(array)隨機獲得列
strs.split()值轉換成列表
再用隨機函數random.choice(strs)
隨機獲得一個元素
如果是單元格的話
就是先獲取單元格的行和列
然後用隨機函數
random.randint(0, 有效行)
random.randint(0, 有效列)
table.cell_value(列,行)
就能獲取任意值了
❹ python3.6 secrets隨機數函數怎麼使用
Python生成隨機數和隨機數質量的方法,random.random()用於生成一個指定范圍內的隨機符點數,兩個參數其中一個是上限,一個是下限。如果a > b,則生成隨機數:<pre t="code" l="python">print random.uniform(10, 20)
print random.uniform(20, 10)
#----
#18.
#12.
random.randint用於生成一個指定范圍內的整數。其中參數a是下限,參數b是上限,Python生成隨機數<pre t="code" l="python">print random.randint(12, 20) #生成的隨機數n: 12 <= n <= 20
print random.randint(20, 20) #結果永遠是20
#print random.randint(20, 10) #該語句是錯誤的。random.randrange方法從指定范圍內,按指定基數遞增的集合中 ,下面對python生成隨機數的應用程序的部分介紹:1.隨機整數:
<pre t="code" l="python">>>> import random
>>> random.randint(0,99)
212.隨機選取0到100間的偶數:
<pre t="code" l="python">>>> import random
>>> random.randrange(0, 101, 2)
423.隨機浮點數:
<pre t="code" l="python">>>> import random
>>> random.random()
0.
>>> random.uniform(1, 10)
5..隨機字元:
<pre t="code" l="python">>>> import random
>>> random.choice('abcdefg%^*f')
'd'5.多個字元中選取特定數量的字元:
<pre t="code" l="python">>>> import random
random.sample('abcdefghij',3)
['a', 'd', 'b']6.多個字元中選取特定數量的字元組成新字元串:
<pre t="code" l="python">>>> import random
>>> import string
>>> string.join(random.sample(['a','b','c','d','e','f','g','h','i','j'], 3)).r
eplace(" ","")
'fih'
❺ 怎麼用python寫一個抽獎程序,是抽取圖片或視頻
16年年會抽獎網上有人對公司的抽獎結果又偏見,於是全員進行了抽獎代碼的review,好像是愛奇藝公司的,下面用python來實現一個抽獎程序。
主要功能有
1.從一個csv文件中讀入所有員工工號
2.將這些工號初始到一個列表中
3.用random模塊下的choice函數來隨機選擇列表中的一個工號
4.抽到的獎項的工號要從列表中進行刪除,以免再次抽到
初級版
這個比較簡單,缺少定製性,如沒法設置一等獎有幾名,二等獎有幾名
import csv#創建一個員工列表emplist = []#用with自動關閉文件with open('c://emps.csv') as f:
empf = csv.reader(f) for emp in empf:
emplist.append(emp)
print("進行一等獎抽獎,共有一名")import random#利用random模塊的chice函數來從列表中隨機選取一個元素e1 = random.choice(emplist)#將中獎的員工從列表中剔除emplist.remove(e1)
print('一等獎得主的號碼是 %s' % e1)
print('進行三個二等獎的號碼抽獎')
e2_1 = random.choice(emplist)
emplist.remove(e2_1)
e2_2 = random.choice(emplist)
emplist.remove(e2_2)
e2_3 = random.choice(emplist)
emplist.remove(e2_3)
print('獲得3個二等獎是 %s %s %s',(e2_1,e2_2,e2_3))#下面依次類推可以設置三等獎的抽獎
改進版
上面的那個初級版,假如要設置個三等獎一百名那麼將要重新維護幾百行代碼,下面用比較高級點的辦法實現.
我們考慮用面向對象來實現,設計一個抽獎類,類中包含一個屬性(號碼來源),一個方法:產生所有抽獎層次指定個數的抽獎號碼。
用到如下知識點:
1. csv模塊部分函數用法
2. sys模塊讀取輸入
3. random模塊函數choice函數用法
4. 列表和字典元素的添加、刪除
6. for循環中range用法
7. 類和面向對象
8. 字元列印,print中的計算
9.open中with
#!/usr/bin/python#coding=utf-8import csvimport sysimport random
reload(sys)
sys.setdefaultencoding('utf8')#coding=utf-8print("開始進行抽獎")#定義個抽獎類,功能有輸入抽獎級別和個數,列印出每個級別的抽獎員工號碼class Choujiang:
#定義scv文件路徑
def __init__(self,filepath):
self.empfile = filepath def creat_num(self):
emplist = [] with open(self.empfile) as f:
empf = csv.reader(f) for emp in empf:
emplist.append(emp)
print('共有%s 人參與抽獎' % len(emplist))
levels = int(input('抽獎分幾個層次,請輸入:')) #定義一個字典
level_dict = {} for i in range(0,levels):
print('請輸入當前獲獎層次 %s 對應的獎品個數' % ( i + 1))
str_level_dict_key = sys.stdin.readline()
int_level_dict_key = int(str_level_dict_key)
level_dict[i] = int_level_dict_key #循環完成後抽獎層次字典構造完畢
#進行抽獎開始
print('抽獎字典設置為: %s' % level_dict) for i in range(0,len(level_dict)):
winers = [] #產生當前抽獎層次i對應的抽獎個數
for j in range(0,int(level_dict[i])): #利用random模塊中的choice函數從列表中隨機產生一個
winer = random.choice(emplist)
winers.append(winer)
emplist.remove(winer)
print('抽獎層次 %s 下產出的獲獎人員有:' % (i + 1 ))
print(winers)#類功能定義完畢,開始初始化並使用if __name__ == '__main__':
peoples = Choujiang('c://emps.csv')
peoples.creat_num()
該段程序在python 2.6 以上及 3中均可以運行,運行結果如下圖:
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "right", "credits" or "license()" for more information.>>> ================================ RESTART ================================>>> 開始進行抽獎
共有24790 人參與抽獎
抽獎分幾個層次,請輸入:2請輸入當前獲獎層次 1 對應的獎品個數1請輸入當前獲獎層次 2 對應的獎品個數3抽獎字典設置為: {0: 1, 1: 3}
抽獎層次 1 下產出的獲獎人員有:
[['張三19826']]
抽獎層次 2 下產出的獲獎人員有:
[['張三18670'], ['張三23235'], ['張三15705']]>>> 1234567891011121314151617
❻ Python外接函數有哪兩種
random.choice()
外接函數模塊的應用模塊里不止一種函數,我們只要選擇適用的函數即可,在這里是random.choice()。
❼ 利用python實現數據分析
鏈接:
煉數成金:Python數據分析。Python是一種面向對象、直譯式計算機程序設計語言。也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。Python 具有腳本語言中最豐富和強大的類庫,足以支持絕大多數日常應用。 Python語法簡捷而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠很輕松的把用其他語言製作的各種模塊(尤其是C/C++)輕松地聯結在一起。
課程將從Python的基本使用方法開始,一步步講解,從ETL到各種數據分析方法的使用,並結合實例,讓學員能從中借鑒學習。
課程目錄:
Python基礎
Python的概覽——Python的基本介紹、安裝與基本語法、變數類型與運算符
了解Python流程式控制制——條件、循環語句與其他語句
常用函數——函數的定義與使用方法、主要內置函數的介紹
.....
❽ python下關於np.random.choice()的問題
dict對象只有keys函數。
❾ python 不用random模塊怎麼隨機取數
Python標准庫random模塊
(生成隨機數模塊)
random.random()
random.random()用於生成一個0到1的隨機符點數: 0 <= n < 1.0
random.uniform(a, b)
random.uniform的函數原型為:random.uniform(a,
b),用於生成一個指定范圍內的隨機符點數。如果a > b,則生成的隨機數n: b <= n <= a。如果 a <b,
則 a <= n <= b。
[python] view plain
print random.uniform(10, 20)
print random.uniform(20, 10)
#---- 結果(不同機器上的結果不一樣)
#18.7356606526
#12.5798298022
random.randint(a, b)
random.randint()的函數原型為:random.randint(a, b),用於生成一個指定范圍內的整數。其中參數a是下限,參數b是上限,生成的隨機數n: a <= n <= b
Note:a = [random.randint(0, 100) for __ in range(100)] #生成100個指定范圍內的整數
[python] view plain
print random.randint(12, 20) #生成的隨機數n: 12 <= n <= 20
print random.randint(20, 20) #結果永遠是20
#print random.randint(20, 10) #該語句是錯誤的。下限必須小於上限。
random.randrange([start], stop[, step])
random.randrange的函數原型為:random.randrange([start],
stop[, step]),從指定范圍內,按指定基數遞增的集合中 獲取一個隨機數。如:random.randrange(10, 100,
2),結果相當於從[10, 12, 14, 16, ... 96, 98]序列中獲取一個隨機數。random.randrange(10,
100, 2)在結果上與 random.choice(range(10, 100, 2) 等效。
random.choice(sequence)
random.choice從序列中獲取一個隨機元素。其函數原型為:random.choice(sequence)。參數sequence表示一個有序類型。這里要說明 一下:sequence在Python不是一種特定的類型,而是泛指一系列的類型。list, tuple, 字元串都屬於sequence。有關sequence可以查看python手冊數據模型這一章,也可以參考:http://www.17xie.com/read-37422.html 。下面是使用choice的一些例子:
[python] view plain
print random.choice("學習Python")
print random.choice(["JGood", "is", "a", "handsome", "boy"])
print random.choice(("Tuple", "List", "Dict"))
random.shuffle(x[, random])
random.shuffle的函數原型為:random.shuffle(x[, random]),用於將一個列表中的元素打亂。如:
[python] view plain
p = ["Python", "is", "powerful", "simple", "and so on..."]
random.shuffle(p)
print p
#---- 結果(不同機器上的結果可能不一樣。)
#['powerful', 'simple', 'is', 'Python', 'and so on...']
random.sample(sequence, k)
random.sample的函數原型為:random.sample(sequence, k),從指定序列中隨機獲取指定長度的片斷。sample函數不會修改原有序列。
[python] view plain
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(list, 5) #從list中隨機獲取5個元素,作為一個片斷返回
print slice
Note:上面這些方法是random模塊中最常用的,在Python手冊中,還介紹其他的方法。
❿ python如何有比重的隨機取值 (要求代碼簡單高效)
python中沒有你所期望的那種直接搞定的函數,都要自己改造一下的,你現在用的random.randint(1,10)這種方法沒什麼問題,而且並不算笨方法,代碼效率也不算低。
還有一種方法是利用random中的choice函數,random.choice的功能是從序列中獲取一個隨機元素,編程思想是將要隨機輸出的元素按不同個數添加到一個列表中,然後利用random.choice,從中隨機選取一個。
=====================================================
代碼如:
def randomchice(a,b,c,d,fa,fb,fc,fd):
import random
tl=[]
for i in range(0,fa):tl.append(a)
for i in range(0,fb):tl.append(b)
for i in range(0,fc):tl.append(c)
for i in range(0,fd):tl.append(d)
return random.choice(tl)
使用時只需輸入如:
print randomchice('zhangsan','lisi','wangwu','zhouqi',50,20,25,5,)
=====================================================
python所追求的不是速度效率而是代碼效率,用python寫的代碼夠簡潔清晰就行,如果要求速度的話,那可以嵌入c語言,那樣效率比python高至少100倍。
希望對你有所幫助。