相关疑难解决方法(0)

O(1)中的唯一(非重复)随机数?

我想生成0到1000之间永远不会重复的唯一随机数(即6不会出现两次),但这并不是像以前的值的O(N)搜索那样.这可能吗?

language-agnostic random algorithm math

174
推荐指数
9
解决办法
9万
查看次数

在Java中生成唯一的随机数

我试图获得0到100之间的随机数.但是我希望它们是唯一的,而不是在序列中重复.例如,如果我得到5个数字,它们应该是82,12,53,64,32而不是82,12,53,12,32我使用它,但它在序列中生成相同的数字.

Random rand = new Random();
selected = rand.nextInt(100);
Run Code Online (Sandbox Code Playgroud)

java random

73
推荐指数
7
解决办法
18万
查看次数

为什么Java的ArrayList的删除功能似乎花费这么少?

我有一个操作非常大的列表的功能,超过大约250,000个项目.对于大多数这些项目,它只是替换位置x处的项目.但是,对于它们中的大约5%,它必须从列表中删除它们.

使用LinkedList似乎是避免昂贵删除的最明显的解决方案.然而,自然地,随着时间的推移,通过索引访问LinkedList变得越来越慢.这里的成本是几分钟(其中很多).

在LinkedList上使用Iterator也很昂贵,因为我似乎需要一个单独的副本来避免在编辑该列表时出现Iterator并发问题.这里的费用是几分钟.

然而,这是我的思绪被吹嘘的地方.如果我更改为ArrayList,它几乎立即运行.

对于包含297515个元素的列表,删除11958个元素并修改其他所有元素需要909ms.我确认结果列表的大小确实是285557,如预期的那样,并包含我需要的更新信息.

为什么这么快?我查看了JDK6中ArrayList的源代码,它似乎正在按预期使用arraycopy函数.我很想理解为什么ArrayList在这里工作得很好,当常识似乎表明这个任务的数组是一个可怕的想法,需要移动几十万个项目.

java optimization performance arraylist

56
推荐指数
5
解决办法
2万
查看次数

如何有效地生成0和上限N之间的K个非重复整数列表

该问题给出了所有必要的数据:在给定区间[0,N-1]内生成一系列K个非重复整数的有效算法是什么.平凡算法(产生随机数,并把它们添加到序列,看着他们,看看他们是否已经在那里之前)是非常昂贵的,如果ķ大且足够接近ñ.

从链表有效地选择一组随机元素中提供的算法似乎比必要的更复杂,并且需要一些实现.我刚刚发现了另一种似乎可以完成工作的算法,只要您知道所有相关参数,只需一次通过即可.

arrays random algorithm permutation

29
推荐指数
3
解决办法
2万
查看次数

不要随机编号以前是随机的

我知道如何使用java Random class随机数.

这将随机出现0-13 13次之间的数字;

 public static void main(String[] args) {
    int ctr = 13; 
    int randomNum = 0;
    while(ctr != 0) {
        Random r = new Random();
        randomNum = r.nextInt(13);
        ctr--;
        System.out.println(ctr +": " + randomNum);
    }
 }
Run Code Online (Sandbox Code Playgroud)

- 我想在0-13之间随机输入13次

- 如果第一个随机数是例如(5),那么我的第二个随机数将从0-13中随机任意一个数字,排除5 ;

如果第二个随机数是例如(4),那么我的第三个随机数将从0-13中随机任意一个,排除5和4 ; 等等.有没有办法做到这一点?

java random

10
推荐指数
3
解决办法
193
查看次数

android - 生成随机数而不重复

任何人都可以告诉我如何生成随机数,没有重复的例子

random(10)应该(可能)返回3,4,2,1,7,6,5,8,9,10而不重复

谢谢

java random

7
推荐指数
1
解决办法
2万
查看次数

如何生成每次唯一的随机数

嘿我正在尝试创建一个程序,生成一个只允许使用一次的随机数.对不起,如果那令人困惑,我会试着解释一下.我希望有一个程序从1-100生成数字,但是如果它生成33,那么对于剩余的数字生成过程33不能再生成,所以我应该以100个不同的数字结束.非常感谢任何帮助,谢谢.

到目前为止,这是我的尝试

public class Seed {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a =0; 
        for (int i =0; i <20;i++) {
             a = (int) Math.ceil(10 * Math.random())  ;
            System.out.println(a);
            int x = a;
            System.out.println("This is x: " + x);

            if (x == a )
            {
                a = (int) Math.ceil(10 * Math.random())  ;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java random

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

如何将随机图像设置为ImageView?

我正在使用9图像视图我想要随机设置图像到imageview,当我点击刷新按钮,但我尝试这样它是为图像的随机分配工作,但它一次在两个(或)三个imageview中重复相同的图像.我的代码中的问题在哪里..

 final int[] imageViews = {
            R.id.imgview11, R.id.imgview12, R.id.imgview13, 
            R.id.imgview21, R.id.imgview22, R.id.imgview23, 
            R.id.imgview31, R.id.imgview32, R.id.imgview33 };

    final int[] images = {
            R.drawable.i1, R.drawable.i2, R.drawable.i3, 
            R.drawable.i4, R.drawable.i5, R.drawable.i6, 
            R.drawable.i7, R.drawable.i8, R.drawable.empty };

    final ImageButton shuffle = (ImageButton) findViewById(R.id.new_puzzle); 
    shuffle.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {        
            Random generator = new Random();
            //int n = 9;
            //n = generator.nextInt(n);
            //Random random = new Random(System.currentTimeMillis());
            for(int v : imageViews) {
                ImageView iv = (ImageView)findViewById(v);
                iv.setImageResource(images[generator.nextInt(images.length - 1)]);
            }
        }
    });      
Run Code Online (Sandbox Code Playgroud)

我不想重复,一个图像仅适用于一个imageview ..

random android image imageview

3
推荐指数
1
解决办法
9066
查看次数

JAVA中的随机数生成

我知道JAVA Random类及其用法.但我想生成一个随机数,在该范围内的所有数字至少生成一次之前,不应重复该数字.任何人都可以提供一些参考..?

在使用Random类时,我遇到的问题是有些数字会重复2到3次,而有些则根本没有生成.我的应用程序可能会在这种情况下失败,因为我有另一个线程根据生成的数字处理一些请求....当有延迟并且下一个唯一数字不可用时,它会在不处理非生成数字的情况下停止...

java algorithm data-structures

3
推荐指数
1
解决办法
440
查看次数

生成唯一的随机数

如何在1到9之间生成9个随机数,不重复,一个接一个.它就像:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9] - {4}中.我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复.但是在更糟糕的情况下,就像我们已经生成6并且我们必须再生成3个数字一样,这个过程有点慢.当范围从[1,9]变为[1,1000]时,这种方法听起来不正确.任何人都可以提出另一种方法.

java random algorithm

3
推荐指数
1
解决办法
1489
查看次数