小编Leo*_*Leo的帖子

Java:具有非均匀分布的随机整数

如何n在Java中创建一个随机整数,在"线性递减分布" 之间1和之间k,即1最有可能,2不太可能,3不太可能,......,k最不可能,并且概率线性下降,如下所示:

在此输入图像描述

我知道已经有关于这个主题的线程,我为制作一个新主题道歉,但我似乎无法从他们那里创造我需要的东西.我知道使用import java.util.*;代码

Random r=new Random();
int n=r.nextInt(k)+1;
Run Code Online (Sandbox Code Playgroud)

1and 之间创建一个随机整数k,均匀分布.

GENERALIZATION:任何提示创建任意分布的整数,即f(n)=some function,P(n)=f(n)/(f(1)+...+f(k))),也将受到赞赏,例如: 在此输入图像描述.

java random non-uniform-distribution

39
推荐指数
4
解决办法
9610
查看次数

如何有效地构造一个大型 SparseArray?包这个?

问题

Julia 是否有一种有效的方法给定的条目列表 (u,v,w)构建一个巨大的稀疏矩阵,其中一些可以具有相同的位置(u,v),在这种情况下,它们的权重 w 必须是总和。因此u,v,w是输入向量,我希望创建一个w[i]在 position 处具有值的稀疏矩阵u[i],v[i]。例如,Mathematica 代码

n=10^6;   m=500*n;   
u=RandomInteger[{1,n},m];   
v=RandomInteger[{1,n},m];   
w=RandomInteger[{-9, 9}, m];   AbsoluteTiming[
SetSystemOptions["SparseArrayOptions"->{"TreatRepeatedEntries"->1}]; 
a= SparseArray[{u,v}\[Transpose] -> w, {n,n}]; ]
Run Code Online (Sandbox Code Playgroud)

需要 135 秒和 60GB 的 RAM。等效的 Python 代码

import scipy.sparse as sp   
import numpy as np
import time
def ti(): return time.perf_counter() 
n=10**6; m=500*n;
u=np.random.randint(0,n,size=m);            
v=np.random.randint(0,n,size=m);            
w=np.random.randint(-9,10,size=m); t0=ti(); 
a=sp.csr_matrix((w,(u,v)),shape=(n,n),dtype=int); t1=ti(); print(t1-t0)
Run Code Online (Sandbox Code Playgroud)

需要 36 秒和 20GB,但不支持 (2)。等效的 Julia 代码

using SparseArrays;
m=n=10^6; r=500*n; …
Run Code Online (Sandbox Code Playgroud)

parallel-processing performance performance-testing sparse-matrix julia

5
推荐指数
1
解决办法
135
查看次数

Java和Mathematica交互

如何在Mathematica中使用Java?

我有两个文件,GRASP.nb并且GRASP.java在同一个文件夹中(BTW:GRASP =贪婪的随机自适应搜索程序).该GRASP.java文件包含一个方法public static int[] TSP(int[][] g, int numberOfIterations, int k).我想在Mathematica中调用这个方法.

我在Mathematica文档中读到,也在这里,我应该写

Needs["JLink`"]; 
InstallJava[]; 
obj=JavaNew[NotebookDirectory[]~~"GRASP.java"]
Run Code Online (Sandbox Code Playgroud)

要么

Needs["JLink`"]; 
InstallJava[]; 
obj=LoadJavaClass[NotebookDirectory[]~~"GRASP.java"]
Run Code Online (Sandbox Code Playgroud)

或类似的东西,但我尝试的任何东西,都会返回错误.我有WinXP,Mathematica 7,Eclipse 3.6.

任何工作的例子都将非常感激.

java wolfram-mathematica

4
推荐指数
1
解决办法
1148
查看次数