小编Mat*_*att的帖子

多维空间中的随机单位向量

我正在研究一种数据挖掘算法,我想从特征空间的特定点中选择一个随机方向.

如果我为[-1,1]中的每个n维选择一个随机数,然后将矢量标准化为长度1,我将在所有可能的方向上得到均匀分布?

我在理论上只是在这里说,因为计算机生成的随机数实际上并不是随机的.

random distribution data-mining uniform computational-geometry

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

如果比较取决于返回值,尾递归是否可行?

我有一个家庭作业,要求使用直接递归的函数来查找数组中最左边,最低,负整数的索引.附加要求是函数的参数是数组和大小,无效值的返回值是-999.

我想出了这个:

int LowIndexMinNeg(int src[], int size)
{
    if (size == 0)
       return -999;
    int index = LowIndexMinNeg(src, size - 1);

    if (index >= 0)
       return (src[size - 1] < src[index]) ? (size - 1) : index;
    else
       return (src[size - 1] < 0) ? (size - 1) : index;
} 
Run Code Online (Sandbox Code Playgroud)

它有效,满足要求,并得到我充分的信任.这可以用尾递归实现吗?

在我看来,因为你必须从递归调用中获取结果,以便在比较中使用它来决定你是否通过那个或更新它,这是不可能的,但是递归仍然将我的大脑联系起来可能有一些我很想念的东西.

注意:我的家庭作业已经上交并评分.

c++ recursion tail-recursion

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

从PHP解析JSON而没有'json_decode'或PEAR的'Services_JSON'

我正在学校为我的数据挖掘课程开发一个项目,我想使用stackoverflow API获取原始数据。我在看有关使用PHP来访问它的一些入门教程,而第一个代码示例根本没有用。罪魁祸首是json_decode函数。学校服务器上安装的PHP版本是5.1.6,并且该功能仅在> = 5.2时存在。在这里搜索时,我发现了有关使用梨的信息,但是学校的PHP配置为'--without-pear'

解决这些限制的最佳选择是什么?我宁愿不必完全切换到另一种语言。是否可以用另一种语言调用外部函数?

违规行是

$response = json_decode(http_inflate(file_get_contents($url)));
Run Code Online (Sandbox Code Playgroud)

php json

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

文件成功打开,但读取结果为“错误的文件描述符”错误,并且统计信息显示文件大小为零

我正在做一个作业,我们应该对使用不良加密算法加密过的PDF进行加密分析。

教授提供的代码将使用创建加密文件fd=open(filename, O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR)

在尝试解密的代码中,我使用打开了该文件fd_in=open(file, O_RDONLY)

问题是,当我尝试从文件中读取时,出现“错误文件描述符”错误。我使用stat尝试获取有关已打开文件的文件描述符“思想”的更多信息,当文件描述符实际上为几百KB时,它表明文件的长度为0。

我正在使用的调试代码是:

if (0 > (len = read(fd_in, (char*)&read_buff, BITE))) {    // BITE is defined as 8
  printf("Error occured grabbing first bite of %s.\n", file);
  printf("%s.\n", strerror(errno));

  struct stat fileStat;
  int stat = fstat(fd_in, &fileStat);

  printf("fstat returned: %d.\n", stat);      // Consistently printing 0
  printf("Information for %s\n",file);
  printf("---------------------------\n");
  printf("File Size: \t\t%d bytes\n",fileStat.st_size);
  printf("Number of Links: \t%d\n",fileStat.st_nlink);
  printf("File inode: \t\t%d\n",fileStat.st_ino);

  printf("File Permissions: \t");
  printf( (S_ISDIR(fileStat.st_mode)) ? "d" : "-");
  printf( (fileStat.st_mode & …
Run Code Online (Sandbox Code Playgroud)

c linux

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

将decimal int转换为little endian字符串('\ x ##\x ## ...')

我想将一个整数值转换为十六进制值的字符串,用little endian.例如,5707435436569584000会成为'\x4a\xe2\x34\x4f\x4a\xe2\x34\x4f'.

我所有的googlefu都找到了我hex(..)给我'0x4f34e24a4f34e180'的不是我想要的东西.

我可以手动拆分该字符串并构建我想要的字符串,但我希望somone可以指出一个更好的选择.

python

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

持久的信号处理

我正在尝试编写一个信号处理程序来捕获任意数量的连续SIGINT信号并阻止程序退出.该程序是一个简单的文件服务器.处理程序设置一个全局标志,导致while循环接受新连接结束,对pthread_exit()的调用确保main允许当前连接在退出之前完成.当我点击ctrl-C一次但第二次立即退出程序时,这一切都像发条一样.

我首先尝试使用signal():

signal(SIGINT, catch_sigint);

...

static void catch_sigint(int signo)
{
    ...
    signal(SIGINT, catch_sigint);
}
Run Code Online (Sandbox Code Playgroud)

我也尝试使用sigaction:

struct sigaction sigint_handler;
sigint_handler.sa_handler = catch_sigint;
sigemptyset(&sigint_handler.sa_mask);
sigint_handler.sa_flags = 0;
sigaction(SIGINT, &sigint_handler, NULL);
Run Code Online (Sandbox Code Playgroud)

不确定如何"重新安装"这个我只是在处理程序中复制此代码类似于使用signal()方法的处理程序.

这些都不像我预期的那样有效.


附加信息:

该程序是一个简单的文件服务器.它接收来自客户端的请求,该请求只是一个由请求的文件名组成的字符串.它利用pthreads,以便可以同时进行传输.收到SIGINT后,我希望服务器退出while循环并等待所有当前传输完成然后关闭.原样,无论我如何编码信号处理程序,第二个SIGINT立即终止程序.

int serverStop = 0;

...

int main()
{
   /* set up the server -- socket(), bind() etc. */

   struct sigaction sigint_hadler;
   sigint_handler.sa_handler = catch_sigint;
   sigint_handler.sa_flags = 0;
   sigemptyset(&sigint_handler.sa_mask);
   sigaction(SIGINT, &sigint_handler, NULL);

   /* signal(SIGINT, catch_sigint); */

   while(serverStop == 0)
   {
      /* accept new connections and pthread_create() for each */ …
Run Code Online (Sandbox Code Playgroud)

c linux signals pthreads

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