生成一个总和为1的随机变量数组(正数和负数)

时间:2017-09-26 10:57:05

标签: python arrays numpy random

我正在尝试创建一个numpy数组,其中随机变量总和为1,但我还想包含负值。

我在尝试:

size =(50,1)
w = np.array(np.random.random(size))

创建数组并填充数字(负数和正数),这样可以正常工作。

现在我正试图将它们总结为1:

w /= np.sum(w)

但是这会改变我的价值观是积极的(消除负面价值)。

像这样做数组的正确方法是什么?

编辑:我已经尝试过random.int和random.uniform,但问题是那些不总结为1.如果我使用w /= np.sum(w)来确保它们总和为1,它只是返回正值。

2 个答案:

答案 0 :(得分:4)

你的问题不是你的标准化,它是你的随机生成器。 class ViewController: UIViewController { var queue = OperationQueue() let imageURLs = ["https://amazingslider.com/wp-content/uploads/2012/12/dandelion.jpg", "https://media.treehugger.com/assets/images/2011/10/tiger-running-snow.jpg.600x315_q90_crop-smart.jpg", "https://www.w3schools.com/css/trolltunga.jpg", "https://www.w3schools.com/w3css/img_lights.jpg", "https://cdn.pixabay.com/photo/2015/04/28/20/55/aurora-borealis-744351_960_720.jpg", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS2L0pETnybA5sld783iz1mgtOFS8vxBTjB4tYXeRtQWDxig3dc"] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } } extension ViewController: UITableViewDelegate, UITableViewDataSource { func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return imageURLs.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell: ImagesTableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ImagesTableViewCell var img: UIImage! let operation = BlockOperation(block: { img = Downloader.downloadImageWithURl(self.imageURLs[indexPath.row]) }) operation.completionBlock = { DispatchQueue.main.async { cell.imgView?.image = img } } queue.addOperation(operation) return cell } } class Downloader { class func downloadImageWithURl(_ url: String) -> UIImage! { if let data = try? Data(contentsOf: URL(string: url)!) { return UIImage(data: data)! } return nil } } 总是从np.random.random生成正浮点数。如果你想要负数,你就必须改变它。

(0,1)

答案 1 :(得分:1)

没有专门针对此任务的内置函数,但您可以根据预期的大小生成一个数组(最好是2d),然后选择总计为1的数组。

以下是一个例子:

$PRIVATE_DNS.testing.com