Python中Random和Math模块学习笔记
由于最近经常使用到Python中random,math和time``datetime模块, 所以决定花时间系统的学习一下
1. math模块
math中的函数不可以用于太过复杂的数的运算, 如果需要复杂数的运行最好使用cmath模块中同名函数, 如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy模块,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用
1.1. 数学常量
math.pi 这个数学常量等于 3.141592...
math.e 这个数学常量 e = 2.718281...,
1.2. 常用简单函数
math.ceil(x) : 对x向上取整,返回最小整数值大于或者等于x
代码如下:
# -*- coding:utf-8 -*-
import math #仅在第一次声明, 以下都将省略
print math.ceil(math.pi) #math.pi是圆周率pi, 类似于C/C++中的宏
//输出4
math.floor(x) : 对x向下取整, 返回整数值小于或者等于x
代码如下:
>>> import math
>>> math.floor(math.pi)
3.0
math.pow(x,y) : 指数运算,得到x的y次方
代码如下:
>>> math.pow(2, 3)
8.0
math.log(x[, base]) : 对数运算,默认基底为e的对数运算。使用base参数时,改变对数的基底, 变为以base为底的对数运算
代码如下:
>>> math.log(10)
2.302585092994046
>>> math.log(8, 2) #log(x)/log(base).
3.0
math.sqrt(x) 平方根计算
代码如下:
>>> math.sqrt(4)
2.0
math.fabs(x) 取绝对值
math.factorial(x) 求阶乘, 即x!
math.exp(x) 求e的x次方
1.3. 三角函数
以下函数都接收一个弧度(radian)为单位的x作为参数
代码如下:
math.acos(x) #求arccos(x)
math.asin(x) #求arcsin(x)
math.atan(x) #求arctan(x)
math.cos(x) #求cos(x)
math.sin(x) #求sin(x)
math.tan(x) #求tan(x)
math.degrees(x) 角度制转化为弧度制
math.radians(x) 弧度制转化为角度制
代码如下:
>>> math.degrees(math.pi / 2)
90.0
1.5. 双曲函数和特殊函数
math.sinh(x), math.cosh(x), math.tanh(x), math.asinh(x), math.acosh(x), math.atanh(x)
还有些函数基本没用过
2. random模块
random模块的作用是产生随机数, 这个模块实现了伪随机数产生器
1.1. 常用函数
random.seed([x]) 用户初始化一个随机数种子, 可选参数可以是任何hashtable对象,默认使用系统时间
random.randint(a, b) 返回一个a到b之间的整数
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.randrange(start, stop, step)等价于random.choice(range(start, stop, step))
代码如下:
>>> random.randrange(10, 100, 2)
90
1.2. 随机挑选和排序
random.choice(sequence) : 从序列中获取一个随机元素. 参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence
代码如下:
>>> random.choice(range(10))
1
>>> random.choice((1, 2, 3, 4))
3
random.sample(sequence, k) # 从指定序列中随机获取指定长度k的片断。sample函数不会修改原有序列
代码如下:
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> new_lst = random.sample(lst, 6)
>>> print new_lst
[8, 9, 2, 1, 5, 4]
>>> print lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random.shuffle(x[, random]),用于将一个列表中的元素打乱, 不会生成新的列表
代码如下:
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> random.shuffle(lst)
>>> print lst
[10, 5, 2, 7, 3, 9, 4, 8, 6, 1]
1.3. 随机生成实数
生成的实数符合均匀分布(uniform distribution)
random.random() 随机生成下一个实数,它在[0,1)范围内。
random.uniform(a,b) 随机生成下一个实数,它在[a,b]范围内。
代码如下:
>>> random.random()
0.019433835195078797
>>> random.uniform(3, 8)
6.830376841208885
random.gauss(mu,sigma) 随机生成符合高斯分布的随机数,mu,sigma为高斯分布的两个参数。
random.expovariate(lambd) 随机生成符合指数分布的随机数,lambd为指数分布的参数。
其余是一些目前没用过的函数, 以后用到了再补充
3. 参考链接
random官网文档
math官方文档

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











XMLをPDFに直接変換するアプリケーションは、2つの根本的に異なる形式であるため、見つかりません。 XMLはデータの保存に使用され、PDFはドキュメントを表示するために使用されます。変換を完了するには、PythonやReportLabなどのプログラミング言語とライブラリを使用して、XMLデータを解析してPDFドキュメントを生成できます。

単一のアプリケーションで携帯電話でXMLからPDF変換を直接完了することは不可能です。クラウドサービスを使用する必要があります。クラウドサービスは、2つのステップで達成できます。1。XMLをクラウド内のPDFに変換し、2。携帯電話の変換されたPDFファイルにアクセスまたはダウンロードします。

Mobile XMLからPDFへの速度は、次の要因に依存します。XML構造の複雑さです。モバイルハードウェア構成変換方法(ライブラリ、アルゴリズム)コードの品質最適化方法(効率的なライブラリ、アルゴリズムの最適化、キャッシュデータ、およびマルチスレッドの利用)。全体として、絶対的な答えはなく、特定の状況に従って最適化する必要があります。

XMLを介して画像を生成するには、XMLのメタデータ(サイズ、色)に基づいて画像を生成するために、ブリッジとしてグラフライブラリ(枕やJFreechartなど)を使用する必要があります。画像のサイズを制御するための鍵は、< width>の値を調整することです。および< height> XMLのタグ。ただし、実際のアプリケーションでは、XML構造の複雑さ、グラフ描画の細かさ、画像生成の速度とメモリ消費の速度、および画像形式の選択はすべて、生成された画像サイズに影響を与えます。したがって、グラフィックライブラリに熟練したXML構造を深く理解し、最適化アルゴリズムや画像形式の選択などの要因を考慮する必要があります。

XMLフォーマットツールは、読みやすさと理解を向上させるために、ルールに従ってコードを入力できます。ツールを選択するときは、カスタマイズ機能、特別な状況の処理、パフォーマンス、使いやすさに注意してください。一般的に使用されるツールタイプには、オンラインツール、IDEプラグイン、コマンドラインツールが含まれます。

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

ほとんどのテキストエディターを使用して、XMLファイルを開きます。より直感的なツリーディスプレイが必要な場合は、酸素XMLエディターやXMLSPYなどのXMLエディターを使用できます。プログラムでXMLデータを処理する場合、プログラミング言語(Pythonなど)やXMLライブラリ(XML.ETREE.ELEMENTTREEなど)を使用して解析する必要があります。

XML構造が柔軟で多様であるため、すべてのXMLファイルをPDFSに変換できるアプリはありません。 XMLのPDFへのコアは、データ構造をページレイアウトに変換することです。これには、XMLの解析とPDFの生成が必要です。一般的な方法には、ElementTreeなどのPythonライブラリを使用してXMLを解析し、ReportLabライブラリを使用してPDFを生成することが含まれます。複雑なXMLの場合、XSLT変換構造を使用する必要がある場合があります。パフォーマンスを最適化するときは、マルチスレッドまたはマルチプロセスの使用を検討し、適切なライブラリを選択します。
