【问题标题】:Generate random integers from 1 to 100 distributed as some function [closed]生成从 1 到 100 的随机整数,分布为某个函数 [关闭]
【发布时间】:2015-12-18 21:57:11
【问题描述】:

我正在努力学习 Python 课程的期末考试,但我被其中一个问题难住了。

我应该编写一个程序来生成从 1 到 100 的随机整数,以便它们“作为正弦函数分布”,因为结果的直方图将遵循正弦曲线。任何可以为我指明正确方向的帮助将不胜感激。

Link to question

【问题讨论】:

  • 你是什么意思“分布为正弦函数”?你的意思是密度是正弦函数?在什么时间间隔内?您是否添加一个常数以使密度不为负?你需要澄清...
  • 回复:“正弦函数的值应该在 1 到 100 之间”...我很确定正弦函数的值在 -1 到 1 之间。
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布代码并准确描述问题之前,我们无法有效地帮助您。 StackOverflow 不是编码或教程服务。
  • 正弦函数的取值范围是[-1, 1]。我很想说这是,至少从技术上讲,这是一个不恰当的问题。也许如果您发布完整问题或完整问题的图像或完整问题的链接,也许有人可以说些什么。现在,它没有多大意义。
  • 对不起,我不是很清楚,我是第一次发帖,我自己并不完全理解这个问题。我已经编辑了带有问题链接的帖子。

标签: python random distribution


【解决方案1】:

恕我直言,这是一个模棱两可、措辞不当的问题。我会试探一下他们想问什么以及我会如何回答。

我对问题的解释

从集合 {1, 2, ..., 100} 中生成 5000 个随机整数,使得概率质量函数 p(x) 与 (sin(x)+1) 成正比。

我将如何回答问题的草图

  1. 构造概率质量函数(本质上是一个向量)
  2. 使用向量(定义 pmf)从分类分布(或 n = 1 的多项分布)生成绘图。

构造这个概率质量函数很容易。我将使用一个向量来表示函数(即 f(1) 是向量的第一个元素,f(2) 是向量的第二个元素等...)

  • 构造一个向量 x = 1,2,...,100
  • 构造一个新向量 p_temp = sin(x) + 1
  • 构造一个新向量 pm = p_temp / sum(p_temp) 使概率总和为 1

那么 pm(1) 将是绘制 1 的概率,pm(2) 将是绘制 2 的概率,等等...一旦你有了 pm 向量,就有几种方法可以生成随机整数。从数学上讲,您是从分类分布中提取的(可以搜索)。 Python has functions for this,尽管code your own 也很容易。

【讨论】:

  • 非常感谢,我会解决这个问题,看看情况如何。
【解决方案2】:

在这里试试https://www.cs.utexas.edu/~mitra/csSpring2015/cs313/lectures/math.html。 这是示例代码

import matplotlib.pyplot as pl
import numpy as np

x = np.linspace(1, 10)

def f(x):
    return np.sin(x) + np.random.normal(scale=0.1, size=len(x))

pl.plot(x, f(x))

【讨论】:

    猜你喜欢
    • 2020-06-17
    • 2015-12-25
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多