Python Pyspark-如何在列值的特定范围内生成随机数?
最初我想在两个数字(10和80)之间生成随机整数: 在当前列值的特定范围内生成随机小数的正确方法是什么?例如,值为25.0的Python Pyspark-如何在列值的特定范围内生成随机数?,python,python-3.x,dataframe,random,pyspark,Python,Python 3.x,Dataframe,Random,Pyspark,最初我想在两个数字(10和80)之间生成随机整数: 在当前列值的特定范围内生成随机小数的正确方法是什么?例如,值为25.0的'score'列+/-15%内的随机小数 我已经研究过了,但是只有一些例子展示了如何使用seed生成随机数。不确定它是否适用于这种情况。我不确定我是否读对了,但您希望找到一个介于21.25和28.75之间的随机浮动范围?如果是: score = 25.0 left_most_column = score - (score*0.15) #21.25 right_most_c
'score'
列+/-15%内的随机小数
我已经研究过了,但是只有一些例子展示了如何使用seed生成随机数。不确定它是否适用于这种情况。我不确定我是否读对了,但您希望找到一个介于21.25和28.75之间的随机浮动范围?如果是:
score = 25.0
left_most_column = score - (score*0.15) #21.25
right_most_column = score + (score*0.15) #28.75
answer = random.uniform(left_most_column, right_most_column)
Uniform
是这里的关键功能。我不确定我读的是否正确,但你想找到一个介于21.25和28.75之间的随机浮动范围?如果是:
score = 25.0
left_most_column = score - (score*0.15) #21.25
right_most_column = score + (score*0.15) #28.75
answer = random.uniform(left_most_column, right_most_column)
统一
是这里的关键功能。导入
来自随机导入选择,randint
从pyspark.sql导入函数为F
从pyspark.sql导入SQLContext
从pyspark.sql.types导入IntegerType、StructField、StructType
#变量设置
rand_范围=0.15
schema=StructType(
[
StructField(“score”,IntegerType(),nullable=False),
StructField(“random_score”,IntegerType(),nullable=True),
]
)
数据=列表()
#创建分数列数据
对于范围(0,50)内的i:
data.append(
{
“得分”:randint(10,80),
}
)
#创建Spark数据帧
df=SQLContext.createDataFrame(数据,模式)
#生成随机化得分列
df=df.withColumn(
“随机分数”,
F.col(“分数”)+
(选择([-1,1])*
兰丁(
F.col(“分数”)*(1-兰特范围),
F.col(“分数”)*(1+兰特范围)
))
)
顶部的大部分是样板,但魔术发生在底部
#导入
来自随机导入选择,randint
从pyspark.sql导入函数为F
从pyspark.sql导入SQLContext
从pyspark.sql.types导入IntegerType、StructField、StructType
#变量设置
rand_范围=0.15
schema=StructType(
[
StructField(“score”,IntegerType(),nullable=False),
StructField(“random_score”,IntegerType(),nullable=True),
]
)
数据=列表()
#创建分数列数据
对于范围(0,50)内的i:
data.append(
{
“得分”:randint(10,80),
}
)
#创建Spark数据帧
df=SQLContext.createDataFrame(数据,模式)
#生成随机化得分列
df=df.withColumn(
“随机分数”,
F.col(“分数”)+
(选择([-1,1])*
兰丁(
F.col(“分数”)*(1-兰特范围),
F.col(“分数”)*(1+兰特范围)
))
)
顶部的大部分是样板,但魔术发生在底部
只需除以100或10import random>>>random\u decimal=random。randint(100,1000)/100>>>打印(random\u decimal)只需除以100或10import random>>>random\u decimal=random。randint(100,1000)/100>>打印(random\u decimal)原始问题要求小数,在这种情况下,您需要更改原始问题的
random_分数
type foFloatType
小数,在这种情况下,您需要更改random_分数
type foFloatType