相关疑难解决方法(0)

快速 R 查找表

之前也问过类似的问题,但没有明确的通用答案。(Joseph Adler 的实验不再在网上,他的书只说“编写一个 S4 类”。)

假设有一个包含多个索引的大型查找表。假设要查找的值大小适中。即使是 R 合并也很慢。下面是一个例子:

{
    L <- 100000000  ## only 100M entries for 1GB*4 of int data
    lookuptable  <- data.frame( i1=sample(1:L), i2=sample(1:L), v1=rnorm(L), v2=rnorm(L) )
    NLUP <- 10      ## look up only 10+1 values in large table
    vali <- sample(1:L, NLUP)
    lookmeup <- data.frame( i1= c(lookuptable[vali,1], -1),
                       i2= c(lookuptable[vali,2],-1), vA=rnorm(11) )
    rm(vali); rm(L)
}

## I want to speed this up---how?
system.time( merge( lookmeup, lookuptable,  by.x=c("i1","i3"), by.y=c("i1","i2"),
                   all.x=T, all.y=F, sort=F ) )
Run Code Online (Sandbox Code Playgroud)

(试试吧!在我的 2019 iMac 上 …

r

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

有一种简单的方法可以从两个整数的复合键创建一个唯一的整数键吗?

由于与问题没有太大关系的各种原因,我有一个带有由两个整数组成的复合键的表,我想从这两个数字中创建一个唯一的键.我最初的想法只是将它们连接起来,但是当我意识到(51,1)的复合键会产生与(5,11)相同的唯一键时,我很快就遇到了问题,即511.

有没有人有一种聪明的方法来生成两个整数中的整数,这样生成的整数对于一对起始整数是唯一的?

编辑:在面对令人印象深刻的数学后,我意识到我应该包括的一个细节是有问题的键的大小.在始发对中,第一个密钥当前是6位数,并且在系统的生命周期中可能保持7位数; 第二个关键还没有超过20个.鉴于这些限制,看起来问题就不那么令人生畏了.

t-sql math primary-key uniqueidentifier composite-key

5
推荐指数
3
解决办法
7516
查看次数

从两个整数生成唯一 ID 号

给定 2 个整数 a 和 b(正数或负数)。有没有生成唯一ID号的公式/方法?

\n\n

注意: 1. f(a,b) 和 f(b,a) 的结果应该不同。2. 计算 f(a,b) x 次 (x > 1),结果应该相同。

\n\n

为了弄清楚这个问题,这个函数 f(n) = (n * p) % q (其中 n=输入序列值,p=步长,q=最大结果大小,n=非负整数,n < q , p < q, p \xe2\x8a\xa5 q (coprime)) 将给出唯一的 ID 号。

\n\n

但是,在我的要求中,输入是两个数字,a和b可以是负整数或正整数。

\n\n

任何参考都是值得重视的

\n

integer numbers unique

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

设置与无序集一起使用的自定义类 - 在集中找不到元素

我想做的是使 std::unordered_set 与我的自定义类 Vector2 一起使用成为可能 -包括搜索已经在 set 中的此类的对象的可能性

让我提供更多细节。我的 Vector2 类的标头(包括自定义哈希表)如下:

Class Vector2
{
private:
    static int lastID;
    const int id;
    int x;
    int y;

public:
    Vector2(int _x, int _y);
    ~Vector2();

    bool Vector2::operator==(const Vector2& other) const;

    int getId() const;
    int getX() const;
    int getY() const;
};

namespace std
{
    template<>
    struct hash<Vector2>
    {
        size_t
            operator()(const Vector2& obj) const
        {
            return hash<int>()(obj.getId());
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

此类的成员函数的实现很简单:

int Vector2::lastID = 0;

Vector2::Vector2(int _x, int _y) : id(lastID++)
{
    x = …
Run Code Online (Sandbox Code Playgroud)

c++ hash class find unordered-set

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

良好的哈希函数,2个整数表示特殊键

我正在尝试确定map<double, double>类型的键.但问题是我想要的密钥将由一对2个数字生成.是否有任何好的函数可以生成像(0,1),(2,3),(4,2)(0,2)等对的密钥.

c++ hash hashmap

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

你如何用两粒种子种植PRNG?

对于我正在制作的游戏,太阳系有x和y坐标,我想使用坐标随机生成该太阳系的特征.最简单的方法是使用两个种子x和y坐标为随机数生成器播种.无论如何从两粒种子中获得一粒可靠的种子,还是有一种好的PRNG需要两粒种子才能长时间生长?

编辑:我知道这两个数字之间的二进制运算,但我试图找到导致最少数量冲突的方法?加法和乘法很容易导致碰撞.但是XOR怎么样?

random

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

访问现有的UITableViewCell

这是一个不同的问题,但我认为错误并没有错,所以我调整了标题以反映我真正想到的.

我正在制作一个动画,它在普通UITableViewCell的cell.imageView中获取一个图像的副本,并将其移动到屏幕底部的标签栏,以模拟将项目放入购物车.我可以复制图像并将副本作为窗口的子视图放置,但我无法弄清楚如何获得原始图像的绝对位置,因此我可以将它放在顶部作为动画的起点.

图像始终显示在屏幕顶部,就像放在0,0一样.

对不起这个问题的noobish性质,我敢肯定我错过了一些非常明显的东西.

- (void)tableView:(UITableView*)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath*)indexPath {

UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
UIImageView *originalImgView = cell.imageView;
UIImageView *img = [[[UIImageView alloc] initWithImage: cell.imageView.image] autorelease];

NSLog(@"Original %@", originalImgView.bounds);  // Shows "Original (null)" at runtime.
NSLog(@"Window Points %@", [self.view.window convertPoint:originalImgView.frame.origin toView:nil]);
NSLog(@"Cell Points: %@", cell.bounds);  // Shows "Original (null)" at runtime.

[img setFrame:CGRectMake( originalImgView.bounds.origin.x, originalImgView.bounds.origin.y ,
        cell.imageView.image.size.width, cell.imageView.image.size.height)];

[self.view.window addSubview:img];

NSLog(@"Selected Cell: %@", cell); // Shows cell info at run time, works
Run Code Online (Sandbox Code Playgroud)

}

animation uitableview coordinates uiview ios

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

独特的两个整数对

可能重复:
以唯一且确定的方式将两个整数映射到一个

我正在尝试为两个整数(Ruby)创建唯一标识符:

f(i1,i2) = f(i2, i1) = some_unique_value
Run Code Online (Sandbox Code Playgroud)

那么,i1 + i2,i1*i2,i1 ^ i2-不唯一以及(i1> i2)?"i1"+"i2":"i2"+"i1".

我认为以下解决方案可以:

(i1>i2) ? "i1" + "_" + "i2" : "i2" + "_" + "i1"
Run Code Online (Sandbox Code Playgroud)

但:

  1. 我必须将结果保存在DB中并将其编入索引.所以我更喜欢它是一个整数,尽可能小.
  2. Zlib.crc32(f(i1,i2))可以保证唯一性吗?

谢谢.

UPD:

实际上,我不确定结果必须是整数.也许我可以把它转换成十进制:(i1> i2)?i1.i2:i2.i1

ruby database crc32

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

根据两个输入找到一个独特的输出?

我需要找到一种方法,这样用户必须输入2个数字(int),并且对于每个不同的值,返回单个输出(最好是int).假设用户输入6, 8它返回k当用户输入任何其他类似6,79,8其他任何输入时(m, n除非6, 8(即使只更改了一个输入))产生完全不同的输出.但问题是,它应该是唯一的,m, n所以我不能使用像是m*n因为6 X 4 = 24但也是,12 X 2 = 24所以输出不是唯一的,所以我需要找到一种方法,对于每个不同的输入,有一个完全不同的输出,是没有重复任何其他价值.

编辑:回应尼古拉斯:输入范围可以是任何但不到1000(但当然超过1)!

编辑2:响应Rawling,我可以使用long(Int64)但不优选使用float或doulbe,因为这个输出将用于for循环,而float和double对于for循环来说很糟糕,你可以在这里查看

c# algorithm math unique

2
推荐指数
2
解决办法
1640
查看次数