小编bak*_*kaa的帖子

以 x,y 坐标为种子的随机数生成器

我正在寻找一种高效、均匀分布的 PRNG,它为平原中的任何整数点生成一个随机整数,坐标 x 和 y 作为函数的输入。

int rand(int x, int y)
Run Code Online (Sandbox Code Playgroud)

每次输入相同的坐标时,它必须提供相同的随机数。

您知道可以用于此类问题以及更高维度的算法吗?

我已经尝试使用像 LFSR 这样的普通 PRNG 并将 x,y 坐标合并在一起以将其用作种子值。像这样的东西。

int seed = x << 16 | (y & 0xFFFF)
Run Code Online (Sandbox Code Playgroud)

这种方法的明显问题是种子不会迭代多次,而是针对每个 x,y 点再次初始化。如果您将结果可视化,这会导致非常丑陋的非随机模式。

我已经知道使用某种大小(如 256)的混洗排列表的方法,您可以像这样从中得到一个随机整数。

int r = P[x + P[y & 255] & 255];
Run Code Online (Sandbox Code Playgroud)

但是我不想使用这种方法,因为范围非常有限,周期长度受限,内存消耗很高。

感谢您提供任何有用的建议!

random algorithm hash dimension

6
推荐指数
1
解决办法
2654
查看次数

如何使用shm pixmap与xcb?

我尝试学习如何在xcb库中使用共享内存pixmaps.您是否有过这方面的经验并希望分享示例代码和/或信息?这将非常有帮助.

谢谢

x11 window shared-memory pixmap xcb

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

XCB - 如何设置WM_SIZE_HINTS?

我正在为xcb中的窗口创建编写一个简约库.我希望能够创建一个不可调整大小的窗口.我发现,可以通过以下方式向窗口管理器提供提示:

xcb_void_cookie_t xcb_change_property (xcb_connection_t *c,       /* Connection to the X server */
                                       uint8_t          mode,     /* Property mode */
                                       xcb_window_t     window,   /* Window */
                                       xcb_atom_t       property, /* Property to change */
                                       xcb_atom_t       type,     /* Type of the property */
                                       uint8_t          format,   /* Format of the property (8, 16, 32) */
                                       uint32_t         data_len, /* Length of the data parameter */
                                       const void      *data);    /* Data */
Run Code Online (Sandbox Code Playgroud)

我尝试用这个函数更改WM_NORMAL_HINTS和WM_SIZE_HINTS,但是我怎么知道我必须在*data参数中放入什么数据?类型是XCB_ATOM_INTEGER还是其他什么?

x11 resize window-managers window xcb

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